diff --git "a/Imatrix/imatrix-rp-extended.txt" "b/Imatrix/imatrix-rp-extended.txt"
--- "a/Imatrix/imatrix-rp-extended.txt"
+++ "b/Imatrix/imatrix-rp-extended.txt"
@@ -1,3 +1,6256 @@
+In addition to a significant decrease in hepatic lipid accumulation in the IOE group, which inhibited energy intake by propionate enrichment, hepatic lipids were also significantly reduced in the mice in the IOP group, which was largely enriched with butyrate. Compared with the IOE group, IOP had a stronger regulatory effect on hepatic metabolism and triglyceride metabolism and higher levels of TCA cycle in the host. In addition, butyrate has the ability to promote browning of white adipose tissue (WAT) to brown adipose tissue (BAT).^[@ref39],[@ref40]^ WAT stores energy, whereas BAT uses energy for heating and consequently host energy expenditure increases.^[@ref41],[@ref42]^ However, adipose tissue weight does not change after WAT browning.^[@ref43]^ Therefore, the weight of adipose tissue of mice in the IOP group dominated by butyrate was greater than that of the mice in the IOE group dominated by propionate.
+
+In conclusion ([Figure [7](#fig7){ref-type="fig"}](#fig7){ref-type="fig"}C), the improvement of obesity condition in mice by both *I. obliquus* extracts was attributed to their effects on gut microbiota and SCFA profiles. IOE increased the levels of propionate-producing bacteria *Bacteroides* and *Akkermansia* in the cecum of HFD-fed mice, resulting in the enrichment of propionate. Propionate reduced weight gain in mice by inhibiting energy intake. IOP increased the levels of butyrate-production-associated bacteria *Lactobacillus* and the *Bacteroidales* S24-7 group in the cecum of HFD-fed mice, resulting in the enrichment of butyrate. Butyrate increased energy consumption, TCA cycle levels, and degradation of carbohydrates and lipids in mice by promoting mitochondrial decoupling.
+
+Conclusions {#sec4}
+===========
+
+IOE and IOP ameliorated HFD-induced obesity condition in mice through differential modulatory effects on gut microbial metabolism. Moreover, we found the connections between cecal butyrate (not propionate) and chemicals of mice, including four metabolites of the TCA cycle and other metabolism-related chemicals.
+
+Materials and Methods {#sec5}
+=====================
+
+Preparation of IOE/IOP {#sec5.1}
+----------------------
+
+The dried and powdered *I. obliquus* (1.0 kg) was extracted with ultrapure water (30 L) at 90 °C for 3 h and concentrated. The supernatant was evaporated in vacuo at 45 °C, followed by extracting with 4 vol of ethanol to get crude extract. The extract was deproteinized by the Sevage method five times. The supernatant was dried in vacuo and lyophilized to get IOP (62.5 g). After *I. obliquus* was extracted with water, the residue was extracted with 80% ethanol at 80 °C in a water bath for 2 h. The supernatant was dried in vacuo and lyophilized to get IOE (30.9 g).
+
+Animal Experimental Design {#sec5.2}
+--------------------------
+
+The experimental protocol was approved by the Animal Ethics Committee of Jilin University and complied with national laws. Five-week-old C57BL/6J male mice (15--17 g) were divided into four groups, 12 mice per group. The mice in the NCD group were fed with normal chow diet, and the mice in the HFD group, IOE group, and IOP group were fed with high-fat diet. The compositions of mice diets are presented in [Tables S4 and S5](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf). The mice in the IOP group were gavaged with IOP at a dose of 1000 mg/kg per day according to previous studies,^[@ref44]^ and the mice in the IOE group were gavaged with IOE at a dose of 500 mg/kg per day according to the extraction rate of IOE/IOP and the dose of IOP. After 14 weeks of treatment, the mice were sacrificed for specimens.
+
+Oral Glucose Tolerance Test (OGTT) {#sec5.3}
+----------------------------------
+
+OGTT was performed using a previously described method.^[@ref45]^
+
+Serum Biochemical Analysis {#sec5.4}
+--------------------------
+
+Serum and liver lipid were measured using the method of kits obtained from Nanjing Jiancheng Bioengineering Institute (Nanjing, China).
+
+RNA Preparation and Quantitative PCR Analysis {#sec5.5}
+---------------------------------------------
+
+The total RNA extraction and the reverse transcription (RT)-qPCR analysis of the gene expression were performed using a previously described method.^[@ref46]^ Primer sequences for the targeted mouse genes are shown in [Table S6](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf).
+
+Sample Collection {#sec5.6}
+-----------------
+
+Urine was collected using metabolic cages at 14th week, and 50 μL of sodium azide solution (0.1% w/w) was added into each urine sample. Cecum contents were washed from cecum in a 2 mL Eppendorf tube containing 1.0 mL of cold phosphate-buffered saline (PBS) (pH 7.4). All samples were then stored in a −80 °C freezer for later analysis.
+
+All samples were thawed at room temperature. Serum was prepared by mixing 100 μL of each sample with a solution of 500 μL of PBS in D~2~O (containing 3-(tri-methyl-silyl) propionic-2,2,3,3-*d*4 acid sodium salt (TSP)). Then, 200 μL exudate of cecum contents was mixed with a solution of 400 μL of PBS in D~2~O (containing TSP). Supernatants (550 μL) were pipetted into NMR analysis tubes after centrifuging (15 000 rpm, 15 min, 4 °C) and passing through 0.22 μm membrane filters. For each urine sample, 400 μL of the sample was mixed with a solution of 200 μL of PBS in H~2~O. Then, 500 μL of supernatants was pipetted into NMR analysis tubes after centrifuging (15 000 rpm, 5 min, 4 °C), and 50 μL of D~2~O containing TSP was also added to each tube. D~2~O provided a field frequency lock and TSP a chemical shift reference (^1^H, δ 0.0).
+
+NMR Data Acquisition and Processing {#sec5.7}
+-----------------------------------
+
+All samples were analyzed by an AVANCE III 600M MHz NMR spectrometer at 298.2 K. ^1^H NMR spectra were acquired by one-dimensional (1D) version CPMG (serum samples) and noesyphpr (urine and cecal samples) pulse sequence with water suppression during the relaxation delay of 3 s and a mixing time of 0.1 s. Sixty-four free induction decays were collected into 64 K data points with a spectral width of 7812.5 Hz (serum samples) and 8417.5 Hz (urine and cecal samples) and an acquisition time of 2 s. Free induction decay (FID) was zero-filled to 64 K prior to Fourier transformation.
+
+Metabolite identifications were confirmed using the Human Metabolome Database (HMDB) and previous studies,^[@ref47]^ based on chemical shifts of hydrogen and peak multiplicity ([Figures S5--S7 and Table S7](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf)).
+
+All of the spectra were manually phased and baseline-corrected in software MestreNova 12.0 (Mestre-lab Research SL). Each spectrum was segmented into regions with a width of 0.005 ppm between δ 9.6 and 0.4. The δ 5.48--6.20 region in urine spectra and δ 4.72--5.20 region in all spectra were excluded to eliminate the effects of urea signals and water suppression. All remaining regions of the spectra were then normalized to the total sum of the integrated spectral area to reduce any significant concentration differences.
+
+Sequencing, Diversity Analysis, and Function Prediction of Cecal Microbiota {#sec5.8}
+---------------------------------------------------------------------------
+
+DNA extraction, sequencing, and data processing were performed using a previously described method.^[@ref48]^
+
+Four parameters of the alpha diversity were used to assess the overall diversity thoroughly. The Ace and Chao (only presence/absence of taxa considered) indexes determine the richness in a community, while the Shannon and Simpson indexes (additionally accounts for the number of times that each taxon was observed) determine the richness and/or evenness of a community. In addition, a higher Shannon index or a lower Simpson index indicates higher community diversity. Unlike alpha diversity, beta diversity was used to measure the division of diversity between two or more communities. Microbial communities had often been characterized using divergence-based measures of beta diversity to determine whether two or more communities were significantly different.
+
+We used PICRUSt (phylogenetic investigation of communities by reconstruction of unobserved states) to perform functional predictions. PICRUSt generates metagenomic predictions from 16S rRNA data using annotations of sequenced genomes in the IMG database. Moreover, the Kyoto Encyclopedia of Genes and Genomes (KEGG) database was used for functional classification.^[@ref49]^
+
+Statistical Analysis {#sec5.9}
+--------------------
+
+The data were expressed as means ± standard errors of the means (SEM). One-way analysis of variance (ANOVA) was performed to identify significant differences among four groups, followed by the indicated post hoc test (lysergic acid diethylamide (LSD) comparison test). The results were considered statistically significant at *p*-value \< 0.05 unless otherwise specified in the figures. *P*-value between two independent groups was analyzed using an unpaired two-tailed *t*-test. Metabolomics data were subjected to OPLS-DA using software SIMCA 14.0 (Umetrics, Sweden) and used to construct multivariate statistical models. Bivariate correlations were calculated using Spearman's *r* coefficients. Heatmaps were constructed using Excel 2016.
+
+Accession Number {#sec5.10}
+----------------
+
+High-throughput sequencing data have been submitted to the NCBI Sequence Read Archive (SRA) under the accession number PRJNA576716.
+
+The Supporting Information is available free of charge at [https://pubs.acs.org/doi/10.1021/acsomega.0c01566](https://pubs.acs.org/doi/10.1021/acsomega.0c01566?goto=supporting-info).3D score plots of the OPLS-DA classification; VIP plot of OPLS-DA; pathway analysis based on different metabolites; effects of IOE/IOP on gut microbial diversity; ^1^H NMR spectra of mice serum, urine, and cecal contents (Figures S1--S7); main metabolites of serum, urine, and cecum contents; compositions of NCD and HFD; primer sequence for amplification of the fragments; and metabolite identifications (Tables S1--S7) ([PDF](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf))
+
+Supplementary Material
+======================
+
+######
+
+ao0c01566_si_001.pdf
+
+Conceptualization, J.Y., H.X., and Q.X.; investigation, J.Y.; supervision and resources, H.X. and Q.X.; Writing-original draft, J.Y. and J.-Y.X.
+
+The authors declare no competing financial interest.
+
+This work was supported by the Jilin Province Science and Technology Institute of China (No. 20180201078YY).
+
+TC
+
+: total cholesterol
+
+TG
+
+: triglycerides
+
+HDL
+
+: high-density lipoprotein cholesterol
+
+LDL
+
+: low-density lipoprotein cholesterol
+
+TSP
+
+: 3-(tri-methyl-silyl) propionic-2, 2, 3, 3-*d*4 acid sodium salt
+
+PBS
+
+: phosphate-buffered saline
+
+Chrebp
+
+: carbohydrate-responsive element binding protein
+
+GK
+
+: glucokinase
+
+PK
+
+: pyruvate kinase
+
+PEPCK
+
+: phosphoenolpyruvate carboxykinase
+
+PC
+
+: pyruvate carboxylase
+
+FBPase
+
+: fructose-1,6-bisphosphatase
+
+G6Pase
+
+: glucose-6-phosphatase
+
+Ppar-γ
+
+: peroxisome proliferator-activated recepto γ
+
+Srebp1c
+
+: sterol regulatory element binding protein-1c
+
+Fas
+
+: fatty acid synthase
+
+Acl
+
+: ATP-citrate lyase
+
+Scd1
+
+: stearoyl-CoA desaturase 1
+
+Acc
+
+: acetyl-CoA carboxylase
+
+Acox
+
+: acyl-CoA oxidase
+
+Ppar-α
+
+: peroxisome proliferator-activated recepto α
+
+Cpt1
+
+: carnitine palmitoyltransferase I
+
+Mcad
+
+: medium-chain acyl-CoA dehydrogenase
+
+Dgat1
+
+: diacylglycerol acyltransferase 1
+
+Dgat2
+
+: diacylglycerol acyltransferase 2
+
+Gpat
+
+: glycerol-3-phosphate acyltransferase
+
+VIP
+
+: variable importance of projection
+
+OPLS-DA
+
+: orthogonal partial least-squares discriminant analysis
+
+CoA
+
+: coenzyme A
+
+SCFA
+
+: short-chain fatty acids
+
+Description
+
+Foreign trailer for Gokusen.
+
+After seven years of enduring popularity on television, Gokusen, finally makes its silver screen debut. Winning over the hearts of millions of viewers and becoming a national heroine, Yukie Nakama reprises her role as Kumiko Yamaguchi, a.k.a Yankumi. Wearing jerseys, glasses and pigtails, the dowdy high school instructor becomes the homeroom teacher for the wild delinquents of Class 3D. At first glance, Kumiko seems like she can be easily intimidated, but much to everyone's surprise, she remains unfazed by her students' shenanigans. Her courage and discipline comes from being raised by a family who also happens to be a feared yakuza clan. With her strong sense of justice and her fierce brawling abilities, Kumiko follows her principles and upholds honor to solve the problems that trouble her students.
+---
+abstract: |
+ We design a new, fast algorithm for agnostically learning univariate probability distributions whose densities are well approximated by piecewise polynomial functions. Let $f$ be the density function of an arbitrary univariate distribution, and suppose that $f$ is $\OPT$ close in $L_1$-distance to an unknown piecewise polynomial function with $t$ interval pieces and degree $\pdeg$. Our algorithm draws $n = O(t(\pdeg+1)/\eps^2)$ samples from $f$, runs in time $\Otilde (n \cdot \poly (\pdeg))$, and with probability at least $9/10$ outputs an $O(t)$-piecewise degree-$\pdeg$ hypothesis $h$ that is $4 \cdot \OPT +\eps$ close to $f$.
+
+ Our general algorithm yields (nearly) sample-optimal and [*nearly-linear time*]{} estimators for a wide range of structured distribution families over both continuous and discrete domains in a unified way. For most of our applications, these are the [*first*]{} sample-optimal and nearly-linear time estimators in the literature. As a consequence, our work resolves the sample and computational complexities of a broad class of inference tasks via a single “meta-algorithm”. Moreover, we experimentally demonstrate that our algorithm performs very well in practice.
+
+ Our algorithm consists of three “levels”: (i) At the top level, we employ an iterative greedy algorithm for finding a good partition of the real line into the pieces of a piecewise polynomial. (ii) For each piece, we show that the sub-problem of finding a good polynomial fit on the current interval can be solved efficiently with a separation oracle method. (iii) We reduce the task of finding a separating hyperplane to a combinatorial problem and give an efficient algorithm for this problem. Combining these three procedures gives a density estimation algorithm with the claimed guarantees.
+author:
+- |
+ Jayadev Acharya[^1]\
+ EECS, MIT\
+- |
+ Ilias Diakonikolas[^2]\
+ Informatics, U. of Edinburgh\
+- |
+ Jerry Li[^3]\
+ EECS, MIT\
+- |
+ Ludwig Schmidt[^4]\
+ EECS, MIT\
+bibliography:
+- 'allrefs.bib'
+title: 'Sample-Optimal Density Estimation in Nearly-Linear Time'
+---
+
+Appendix {#appendix .unnumbered}
+========
+
+[^1]: Supported by a grant from the MIT-Shell Energy Initiative.
+
+[^2]: Supported by a Marie Curie CIG, EPSRC grant EP/L021749/1 and a SICSA grant.
+
+[^3]: Supported by NSF grant CCF-1217921 and DOE grant DE-SC0008923.
+
+[^4]: Supported by MADALGO and a grant from the MIT-Shell Energy Initiative.
+
+Extra-anatomic aortic bypass for complex (re-) coarctation and hypoplastic aortic arch in adolescents and adults.
+Various surgical approaches have been proposed for complex (re-) coarctation and aortic arch hypoplasia (AAH). We report seven patients (mean age 19.6+/-9.5 years) with complex coarctation or re-coarctation and AAH successfully treated by extra-anatomic ascending-to-descending aortic bypass (ADB) via sternotomy between 1995 and 2002 without mortality and no relevant complication early postoperatively and during a follow-up of 24+/-29 (0.2-84) months. ADB may therefore be considered in selected patients with (re-) coarctation with AAH, with the need for concomitant ascending aortic or cardiac surgery and in patients with aortic arch stenosis and increased risk of complications under DHCA.
+This invention generally relates to the formation of gas tight pressure blocks in multiple wire or conductor electric cables such as telephone cables to enable air pressurization of sections of such cables. In particular, this invention is useful in maintaining fluid pressure in the pressure block forming compound during multiple injections at a single site on a cable during in-field service or installation.
+U.S. Pat. No. 3,823,250, the disclosure of which is incorporated herein by reference, discloses a tap fitting suitable for use with the valve hereinafter described. Briefly, the tap fitting comprises a curved base sheet for placement over an opening cut in the sheath of the cable and an injection port integrally formed with and projecting from the sheet, the port including means for forming a pressure tight covering, such as threads about the mouth of the port.
+As is well known in the art, air pressurization of sections of electric and telephone cables prevents the seepage of water or moisture into the cable and the resulting noise and interference in communication and power circuits. Pressure blocks forming dams at intermittent points over the length of the cables are provided by injecting a self-setting liquid compound which hardens and fills the space around the wires over a sufficient length to hold the air pressure. To form such a pressure block it is necessary to make an opening in the cable sheathing leading to the interior and then to provide and exteriorly positioned fitting through which the liquid block forming compound may be injected. To accomplish this, a fluid injector is used. Typically the fluid injector comprises a chamber containing a discrete amount of block forming compound, a pressurizing plunger operative in the chamber, and a nozzle in fluid communication with the chamber through which the fluid is ejected in response to the compression movement of the plunger operating on the compound. The fluid compound is injected into the interior of the cable by threading the nozzle of the fluid injector to the tap fitting and compressing the plunger.
+Where a large amount of compound is needed to fill the cable interior to the desired extent, i.e., more than the amount normally contained within the injector chamber, the continuous injection operation must be interrupted so that the injector chamber can be refilled or recharged. To recharge the fluid injector in the midst of the injection operation, the pressure on the plunger of the fluid injector is released and the plunger is withdrawn to permit access to the injector chamber for refilling with the compound.
+Recharging in the midst of the cable filling for block forming operation presents a number of drawbacks. Due to residual pressure in the cable, some of the liquid compound escapes through the tap fitting and pressure interior of the cable is normally lost. To overcome these problems, stop valves have been devised to be interposed between the fluid injector and the cable interior. Such stop valves permit injection of fluid through a fitting into the cable interior while opposing the escape of the pressurized fluid compound therefrom. The 3M Company of Minneapolis, Minn., for example, markets a resin pressure splicing system under the trademark "SCOTCHCAST Brand R.P.S." The 3M system includes a one-way valve that opens to permit the injection of the blocking compound and closes under the residual back pressure to prevent the escape of the blocking compound.
+Such prior art valves have considerable drawbacks, particularly where the nozzle of the fluid injector is adapted to sealably couple with a conduit (which includes the valve) into the cable interior. For example, due to the pressure seal between the injection nozzle and the valve, it is difficult to release the plunger of the fluid injector, since any attempt to do so creates a vacuum in the interior of the fluid injector. This makes it difficult to recharge the fluid injector while it is in place on the tap fitting.
+/*
+ * Copyright 2000-2009 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.intellij.refactoring.safeDelete.usageInfo;
+
+import com.intellij.util.IncorrectOperationException;
+
+/**
+ * @author yole
+ */
+public interface SafeDeleteCustomUsageInfo {
+ void performRefactoring() throws IncorrectOperationException;
+}
+
+Why isn't climate change keeping more Senators up tonight?
+
+All-nighters are usually the result of not doing your homework, but this evening twenty-eight United States senators will be up for pretty much the opposite reason. Having read the latest science on climate change, they will be making speeches through the night to call for comprehensive action to meet this threat.
+
+It’s an unusual tactic, but the real question isn’t why are twenty-eight of them talking all night, but why the other seventy-two senators are sleeping when we’re facing such a serious challenge. All the major American scientific organization have been warning us about the reality and seriousness of climate change for years. And while it may be happening slowly, that won’t make it any less expensive or devastating. If taxpayers liked paying for damage from Hurricane Sandy, or the droughts and wildfires in the West and Midwest, they’re going to have a ball as the impacts get stronger in the years to come.
+
+So why are the Sleeping 72 ignoring this severe threat to our economy and our environment?
+
+It’s not that endorsing the science of climate change is unpopular in this country. 69% of Americans believe there is “solid evidence” the climate is changing (Pew, 2013). But as is almost always the case, members of Congress care a lot less about what Americans in general think than about what the voters of their state or district think. Even more specifically, that means being wary about taking position that might alienate the core supporters of your party, or ‘gettable’ moderates.
+
+As a result, many House members from solidly conservative districts, and Senators from swing states, are afraid to step out on an issue like climate change. Never mind that prudent action now will save their constituents money in the long run, and protect future generations from devastating storms, droughts, and health effects. If the politics look worrisome, they’d rather get a good night’s sleep tonight.
+
+But the funny thing about politics is that we often get it wrong. Like in sports, sometimes the worst thing you can do is play not to lose – avoid risks to nurse a lead, hoping it will hold up. Clearly, there are a lot incumbents who have calculated that denying the obvious truth of climate science will protect them from unnecessary political risk. But, in the long run, that could be a losing political strategy. 80% of voters under 35 want action to address climate change. More importantly to politicians who are afraid of the issue, 56% of younger voters who don’tgenerally approveof President Obama’s job performance support action (GS Strategy Group, Benenson Strategy Group, 2013). And it’s not just the long run. Even in 2014, before that demographic wave washes over us, signalling a sensible position on climate change (it’s real, we should act prudently) is a great way to signal moderation to swing voters.
+
+Senators, of course, know the politics of their states much better than most of us outside observers. But most of them also know they got their jobs by, at some point, upsetting the status quo – beating an incumbent, surprising a front-runner, grabbing a forgotten issue and rallying the public. In business and in politics, new ideas are disruptive. If the Sleeping 72 want to avoid becoming the Kodak or Blockbuster of politics, they’d better wake up to the threat of climate change.
+
+Keith Gaby
+
+Get new posts by email
+
+Comments
+
+Michael Ashley
+
+March 10, 2014at 7:22 pm (ET)
+
+If people would pay attention to the fact that politicians follow the money not the voters they might see that this is the best time to start a green socialist/ capitalist party ( I know - it's a fantasy )
+
+Vivian Tisevich
+
+March 10, 2014at 9:17 pm (ET)
+
+Hmm, wondering why Ohio isn't being represented tonight? Unless I missed seeing Senator Brown and Sen. Portman's name, and if so, I apologize. I realize there are many other issues of concern to keep my reps busy, such as working to amend the Indian Child Welfare Act, that I contacted them about today, but c'mon, is climate or the abduction of children off reservations even on their top ten list? It matters to me, even tho I'm just a little ole voting gal in Ohio. When we know better, we do better. Those of you there tonight made the choice to do better. thank You!
+
+By the time the really obvious effects of climate change show, most of these senators will be out of office or died of old age. The extreme weather we experience now is easy to brush off as natural variation, and no one can say storm x was caused by climate change. It is hard for any person, especially senators to react to something unless it is staring them in the face. By the time it is staring us in the face it will be too late. The world will not end, but it will be forever changed.
+Training for a major sports event is never easy, be it for the first 5km run or the fifth ultra-marathon, but Tinké is here to the rescue! Follow the journey of Chris Small and James Rotheram, two first-time Tinké users, as they make use of this nifty device to get their body prepared for their ascent up Mount Kinabalu.
+
+Preparing for this big event should be no different from preparing for any other significant occasion in your life. Physical and mental preparation is important to ensure that you can perform at your peak during the event itself. The Tinké then helps keep track of your fitness and wellness levels, to ensure that you deliver your best performance.
+
+Tinké interprets your fitness and stress indices through the measurement of your heart rate, respiratory rate, blood oxygen saturation and heart rate variability. The Zensorium application and dashboard then stores the readings and tracks the progress over time.
+
+“James and I haven’t done some tracking in awhile, and he came up with this idea. And so, we’re going to climb Mount Kinabalu together,” said 28-year-old Chris Small.
+
+“And the Tinké is good for that (Helping to prepare for the climb),” added 35-year-old James Rotheram.
+
+Getting started, the duo decided to try out a hypoxia chamber to see how their body would fare under external conditions, similar to what they would face on their climb up Mount Kinabalu. After doing some simple exercises, Chris was shocked to see that his Vita reading was only 47/99.
+
+“A sense of a reality check, I wasn’t as healthy as I thought I was,” said Chris.
+
+The duo knew that they had to improve their health, fitness and stamina, and fast. As part of their preparation, both friends practiced yoga for mind and body relaxation, two weeks prior to the climb.
+
+“Everywhere we’ve come on this project, everyone has said we need to improve our breathing. And yoga is really a good way of doing that,” mentioned James.
+
+As a trial run, the duo trekked up Bukit Timah hill two days before their Mount Kinabalu climb.
+
+On the day of the climb itself, while both James and Chris were satisfied with how they have progressed over the previous month, it remains uncertain if they would be able to complete the hike up Mount Kinabalu. Chris appeared fitter than James, and James was concerned if he would become a liability for Chris.
+
+“I think now we are in a better place than we were before. We’ve spent two weeks of training, prepared all the gear that we need, we’ve done our yoga, we’ve worked on our breathing, and in relaxing ourselves and our bodies, and we’ve done a lot of physical training. I think after all that, we are more prepared than we initially were. On Tinké, my scores are pretty good,” said Chris.
+
+“My score this morning wasn’t brilliant on Tinké, but that’s not telling how my body feels, but we need to get hiking to see how the body reacts,” remarked a concerned James.
+
+While the ascend itself was a daunting experience, both friends pulled through and made it to the top, being possibly at the highest point one could ever be in South East Asia.
+
+“This was tough. This was really tough. Am I built for it? Maybe now? But a month ago and doing our training? No. All this played a role and helped me get ready for this climb,” said Chris.
+
+Using Tinké for a month, Chris and James were able to improve their Vita and Zen indices, to successfully conquer Mount Kinabalu. The journey itself will not be easy, but training with Tinké can make the process a whole lot simpler.
+
+Recommended articles:
+
+Zensorium | 5 Simple Back-to-Basics Workout
+
+Zensorium | 5 Ways to be a better runner
+
+Zensorium | Why is running good for you?
+
+Follow us on:
+
+Zensorium, the makers of Tinké and Being.
+Pros:
+
+Cons:
+
+The Worms series of games have always been a bit off-kilter. In its initial incarnation as a time-sensitive 2D turn-based strategy game, Worms pitted cute little animated earth-munchers against one another with a vast arsenal of weapons and power-ups amid bright, colorful environments that got blown to bits in the process. As fans eagerly anticipate the first 3D incarnation of the series next year, Team 17 have created an unusual spin-off to keep us quite busy and amused: the rather addictive and hyperactive combat puzzle game, Worms Blast.
+
+Bust-A-Worm?
+
+Although Blast has the look of a Worms game, the gameplay is totally different. It's more like the puzzle-flavored Bust-a-Move, which involves shooting bubbles at puzzle pieces falling from the sky. In this game, you control a little boat-bound character armed with a bazooka that fires color-coded missiles. You can move left and right, tilt the cannon up and down to alter your trajectory, and collect other weapons and power-up crates, released by destroying puzzle pieces with a missile of the same color.
+
+Since your character is in a boat, you also have to contend with rising tides, torrential weather conditions, sea monsters, and other hazards of the deep zooming around as you fight for survival. In most of the challenges, puzzle pieces gradually descend towards the water regardless of whether or not you shoot at them, so it's important to keep clearing the puzzle pieces lest you get pushed underwater. In addition, rising tides must be quelled by gathering falling stars, which are also among the puzzle pieces. If your aim is terribly off, and you hit nothing at all, cartoon items such as anvils, refrigerators, and cannonballs will fall from the sky, geared towards bonking you on the head and damaging your health. It's a far cry from the whole "you-take-a-turn, I-take-a-turn" format of the original games.
+
+Worms Blast offers a number of gameplay modes. There are numerous full-screen challenges where you face the puzzles alone, as well as a number of head-to-head modes where you play via split screen against another person or the CPU. It's a good idea to play through some of the single-player challenges first -- they serve as a sort of boot camp, where you'll learn all the basics of puzzle combat (as odd as that may sound). As you progress in these single-player missions, you'll occasionally unlock new modes.
+
+In one challenge, you've got six missiles and six tough-to-hit targets, but all the time in the world to hit them. In another, UFOs (composed of puzzle pieces) zoom towards the water and you've got to hit as many as possible directly in the belly before the timer runs out. Another challenge involves hitting rapidly descending targets on alternate sides of the screen in quick succession, adding a couple of seconds to the timer with each successful shot. There are simply too many variations in each mode to catalog here, which is a good thing. Some of the challenges are frustrating, but they're considerably varied and ultimately rewarding.
+
+Timed target shooting is one of many intense challenges you'll face in puzzle mode.
+
+Your progress in the main puzzle mode gets saved along the way, so once you pass a really tough challenge, you have the option of never looking back. You can also return to a challenge you enjoyed, or continue the remaining challenges with any character of your choice. The characters (which oddly enough, aren't limited to worms) have varying thresholds for damage, and their boats vary in terms of size and speed. There's also a tournament mode, in which you've got to survive for as long as possible during specific challenges, most of which are subtle variations of the ones introduced in the puzzle mode.
+Q:
+
+как передать json на сервер
+
+Здравствуйте, у меня есть 2 json объекта, находящиеся в javascript. Каким образом мне хранить их на сервере, файлами или в запросе передавать? Пожалуйста, с примерами кода.
+Бэкэнд на ASP.NET 4.5
+
+A:
+
+На клиенте конвертировать его в string:
+myStringObj = JSON.stringify(myObj);
+
+Дальше отправить его любым способом на сервер (xhr, form submit);
+Процесс здесь
+А как хранить вам виднее, либо база данных, либо статичный json, зависит от того что делаете
+
+
+Category: Console
+
+We all know that Microsoft is working on a certain project called the Project Scorpio and that it’s just the next generation of the Xbox console. It was back in 2016, Microsoft had announced at the E3 about their next project codenamed Project Scorpio. Back then they announced that the console is set to be rolled out in 2017. It’s already 2017, and we haven’t heard anything much about the release date of the Xbox 2 until now. There are fresh rumors surrounding the Xbox Scorpio release date, and we are going to discuss it in this post.
+
+The current console the Xbox One has been launched back on November 22, 2013, in the US and clearly ended up winning hearts of people. So Xbox fans really got excited when they first heard of the project. But the only question that has been on people’s minds had been that when exactly does Microsoft plan to launch their products. Of course, they said the Xbox 2 Release Date in 2017 but we are already halfway through the year, already five months into the year and there is no real confirmation. Fans have been wondering is if the release date has been postponed to which we now have an answer.
+
+The new rumor is basically good news for fans who can pretty much hope to pick up the console this Christmas. This is just the sort of news we had been waiting for since the time the project was announced. This is the rumor that has emerged right before the 2017 E3 gaming expo. And the best fact is that the news comes from none other than the Xbox boss Phil Spencer, who when asked on Twitter is there is a change in the Xbox 2 release date, replied saying this: “Schedule looks very good right now, no issues.” This is what has prompted fans and tech gurus to believe that the console will be coming out in the second of the year and the most convenient time is the holiday season of Christmas, which is a great time to send your product sales soaring.
+
+We are expecting that Microsoft will announce the date of the release at the E3 gaming expo and there are expectations that they might also end up revealing the price of the console so that people are pretty much equipped to handle the pocket burn when Xbox 2 actually hits the market shelves.
+
+There are a lot of talks going on surrounding the Xbox 2 and a lot of rumors as to what new things that console will be bringing on the table. There are reports that there’ll be Voice Control Settings which will make the console a serious winner in the gaming industry. People expect the console to come with everything that the new and advanced technology has to offer in this modern day time. There are also talks that the Xbox 2 will be featuring custom game specific controllers that’ll be great, to say the least. And folks, this is all that we know about the upcoming console, but there is no official confirmation regarding these, so you should really take these rumors with a pinch of salt.
+Katabexin, Medichrom
+
+The drug brand named Katabexin contains generic salt-Betahistine Hydrochloride and is manufactured by Medichrom.Katabexin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- N07CA01-Betahistine.
+
+Generic Salts
+
+Betahistine Hydrochloride
+
+Available types of drugs
+
+N / A
+
+Medical categories
+
+Human DrugAntivertigo drugs
+
+Usage-Diseases
+
+N07CA01-BetahistineManufacturers
+
+Medichrom
+
+More Drugs
+
+The drug brand named Kasmucol contains generic salt-Acebrophylline and is manufactured by Teva.Kasmucol is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+
+Generic Salts
+
+The drug brand named Kas contains generic salt-Preparation for Enteral Nutrition and is manufactured by Nutricia-Bago.Kas is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+
+Ge...
+
+The drug brand named Kastair EZ contains generic salt-Montelukast Sodium and is manufactured by Pediatrica.Kastair EZ is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukast.
+
+The drug brand named Kast contains generic salt-Montelukast and is manufactured by RND Laboratories.Kast is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukast.
+
+Gen...
+
+The drug brand named Kastorion contains generic salt-Montelukast Sodium and is manufactured by OEP Philippines.Kastorion is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukas...
+
+The drug brand named Katabios contains generic salt-Multivitamins and is manufactured by Specialita Igienico Terapeutiche.Katabios is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- A11BA-Mu...
+
+The drug brand named Katagrip contains generic salt-Acetaminophen and is manufactured by Angelini.Katagrip is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+
+Generic Salts
+
+The drug brand named Katapekt contains generic salt-Ammonium Chloride and is manufactured by Vitabalans.Katapekt is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- N02AA59-Codeine, combinati...
+
+The drug brand named Katar contains generic salt-Corynebacterium Pseudodiphtheriae and is manufactured by Istituto Sieroterapico Berna.Katar is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)-...
+
+The drug brand named Katasuccin contains generic salt-Succinic Acid and is manufactured by Unidentified Pharmaceutical Company.Katasuccin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- A...
+
+The drug brand named Katen contains generic salt-Mexiletine Hydrochloride and is manufactured by Zentiva.Katen is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- C01BB02-Mexiletine.
+
+The drug brand named Kathro contains generic salt-Cholesterol and is manufactured by Unidentified Pharmaceutical Company.Kathro is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC....
+
+The drug brand named Katin contains generic salt-Bile Salts and is manufactured by Instituto Sanitas.Katin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+
+Generic Salts
+
+The drug brand named Kativ N contains generic salt-Vitamin K1 (Phytonadione) and is manufactured by Unidentified Pharmaceutical Company.Kativ N is mainly associated with symptoms and indications-The International Classification of Diseases (IC...
+
+The drug brand named Katogel contains generic salt-Emollient and is manufactured by Deverge Medicina e Medicalizzazione.Katogel is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- D02AX-Other...
+The present disclosure relates to computer systems, and in particular to managing file access to applications that are deployed in a virtualized computer environment.
+Virtualized computer environments, which may include cloud computing systems, composite information technology systems and computer cluster systems, are used to provide computer resources or other computing resources to end users. In a cloud computing environment, the physical hardware configuration is hidden from the end user. Cloud computing systems may include servers, network storage devices, routers, gateways, communication links, software (e.g., applications, operating systems, web services, etc.), and other devices. However, because the physical hardware and software platforms on which cloud computing system is implemented are hidden within a “cloud,” they can be managed, upgraded, replaced or otherwise changed by a system administrator without the customer being aware of or affected by the change.
+A computer cluster, also referred to as a cluster, may be considered as a type of cloud computing environment and may include a set of loosely connected computers that may be connected to one another via local networks.
+In a typical cloud computing environment, applications may be executed on virtual machines or appliances, which are guest operating systems installed within a host system and an optional preset configuration and structure (e.g., combination of operating system and web server). Virtual Machines are typically implemented with either software emulation or hardware virtualization, or both. A single hardware and/or software platform may host a number of virtual machines, each of which may have access to some portion of the platform's resources, such as processing resources, storage resources, etc.
+Because different applications that are deployed in a cloud computing environment may require access to files, such files may not be consistent among the different applications and/or instances of applications unless a shared location is provided, which may impose unwanted additional complexity to the installation and maintenance of the application. Additionally, unexpected outcomes may occur in the event that two different applications and/or instances of applications access the same file in an overlapping time period. Yet further, synchronization of files used by more than one application and/or instance may be problematic in a cloud computing environment.
+Q:
+
+Insert a row with default value column in sqlalchemy
+
+I am writing a program which uses a database with sqlalchemy as client.
+Here is one of my tables
+class DownloadRecord(Base):
+ __tablename__ = "DownloadRecords"
+ id = Column("Id", Integer, primary_key=True, autoincrement=True)
+
+ download_name = Column("DownloadName", Unicode, nullable=False)
+ download_date = Column(
+ "DownloadDate", DateTime, default=datetime.datetime.utcnow, nullable=False
+ )
+
+the column download_date is defined with a default value, both here and in the server side table. Here is the definition of the column on the mssql server
+DownloadDate DATETIME NOT NULL DEFAULT GETDATE()
+
+however I try to add the record DownloadRecord(download_name="new_download_name") and I get the following exception.
+
+sqlalchemy.exc.IntegrityError: (pyodbc.IntegrityError) ('23000',
+ "[23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot
+ insert the value NULL into column 'DownloadDate', table
+ 'DownloadRecords'; column does not allow nulls. INSERT fails. (515)
+ (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client
+ 11.0][SQL Server]The statement has been terminated. (3621)") [SQL: INSERT INTO [DownloadRecords] ([DownloadName], [DownloadDate]) OUTPUT
+ inserted.[Id] VALUES (?, ?)] [parameters: ("new_download_name", None)]
+
+I also tried to make this column nullable but When I added the new row the DownloadDate column was Null.
+How do I make it automatically use the default value?
+
+A:
+
+The problem is incompatibility between the type of the column DownloadDate and the type of the value you give as its default value on the client side.
+The type you used is DateTime (on the server side as well as the client side).
+However, in the following code:
+Column("DownloadDate", DateTime, default=datetime.datetime.utcnow, nullable=False)
+
+the return value of datetime.datetime.utcnow() is a timezone aware object, while SQL Server's DateTime isn't.
+I see two possible solutions:
+
+Change the default value to a callable which returns a datetime object which is not timezone aware.
+Change the type of the DownloadDate column to a timezone aware type. You can use SQL Server's datetimeoffset on the server side, and SQLAlchemy's DATETIMEOFFSET on the client side.
+
+Take a look at Microsoft's docs on date and time types for the full reference.
+On another note, consider moving to a code first design, where you define your schema in one place.
+
+
+Live and let love /
+
+"Though Willow Pierce has moved forward since her husband died two years ago, she can't ignore her sixth sense that Jack is alive. When newcomer Con Russo comes to town, Willow is convinced he's Jack. She'd never forget his eyes. Willow is determined to learn the truth about Con's identity-even... Full description
+The fate of chlorine and organic materials in swimming pools.
+The fate of organic nitrogen and carbon introduced into a swimming pool by pool users has been studied using a 2.2 m(3) model pool. The study made use of a body fluid analogue (BFA), containing the primary endogenous organic amino compounds, and a soiling analogue represented by humic acid (HA). The system was used to examine the effect of organic loading and organic carbon (OC) sources (i.e. amino or HA) on the levels and speciation of the key chlorinated disinfection by-products of trihalomethanes (THMs) and chloramines under operating conditions representative of those employed on a full-scale pool. Results revealed OC, chloramines and THMs to all attain steady-state levels after 200-500 h of operation, reflecting mineralisation of the dosed OC. Steady-state levels of OC were roughly linearly dependent on dose rate over the range of operational conditions investigated and, as with the chloramine levels recorded, were in reasonable agreement with those reported for full-scale pools. THM levels recorded were somewhat lower than those found in real pools, and were dependent on both on pH carbon source: the THM formation propensity for the soling analogue was around eight times than of the BFA. Of the assayed by-products, only nitrate was found to accumulate, accounting for 4-28% of the dosed amino nitrogen. Contrary to previous postulations based on the application of Henry's Law, only insignificant amounts of the volatile by-products were found to be lost to the atmosphere.
+Q:
+
+textbf doesn't work with txfonts package
+
+If I compile this, it won't work - the text won't be bold.
+\documentclass[9pt, a4paper]{extarticle}
+\usepackage[utf8]{inputenc}
+\usepackage[IL2]{fontenc}
+\usepackage{txfonts}
+\begin{document}
+\textbf{Something}
+\end{document}
+
+If I remove the package usage, it'll work, but I do need it. What should I do?
+
+A:
+
+The log file tells you
+LaTeX Font Warning: Font shape `IL2/txr/m/n' undefined
+(Font) using `IL2/cmr/m/n' instead on input line 5.
+
+LaTeX Font Warning: Font shape `IL2/txr/bx/n' undefined
+(Font) using `IL2/txr/m/n' instead on input line 6.
+
+meaning that txfonts doesn't support the IL2 encoding (just a few fonts do) and the standard Computer Modern font is used instead.
+
+
+Vision
+
+Our Vision
+
+Develop and sustain a nationally recognized model for community fitness and health;
+
+Maintain a wellness campus that serves more than 3,000 diverse members with integrative programming;
+
+Operate with fiscal and organizational sustainability.
+
+Vermont’s future prosperity depends on our ability to provide citizens with a solid foundation of health and physical fitness. A healthy population becomes the basis for community and economic development, as healthy citizens are also productive employees, contributing community members, nurturing parents and motivated participants in our education system. The key to a healthy population is a multi-dimensional fitness environment that provides opportunities for a social and family experience, skill building through sports, and sustainable pursuit of fitness or athletic performance goals.
+
+Vermonters have had a long standing commitment to the cultivation of our landscapes for recreational use, to thoughtful investment in an innovative recreation business community, and to the design of cutting edge equipment and programs designed to engage individuals at all ages and abilities in health and physical fitness and the pursuit of athletic performance. The Confluence–as a community sports center--has a unique role to play in securing access for adults, youth and children to these investments and innovations that can overcome the challenges in our community. Together, we can work to forward a vision of a healthy population, a rewarding recreation legacy and sustainable economic future for Vermonters.
+
+88 N.Y.2d 925 (1996)
+669 N.E.2d 1111
+646 N.Y.S.2d 789
+The People of the State of New York, Respondent,
+v.
+John A. Ceresoli, Appellant.
+Court of Appeals of the State of New York.
+Argued June 6, 1996.
+Decided June 28, 1996.
+Frank Policelli, Utica, for appellant.
+Michael A. Arcuri, District Attorney of Oneida County, Utica (Timothy P. Fitzgerald of counsel), for respondent.
+Chief Judge KAYE and Judges SIMONS, TITONE, BELLACOSA, SMITH, LEVINE and CIPARICK concur.
+MEMORANDUM.
+The order of the Appellate Division should be affirmed.
+*926Defendant was charged with criminal possession of a forged instrument and with the theft of $3,500 from the Toccolana Club, a private social club in Rome, New York. After his conviction for grand larceny in the fourth degree (Penal Law § 155.30), defendant moved pursuant to CPL 330.30 to set aside the verdict on the ground of juror misconduct involving a single seated juror. During voir dire, the juror, a resident of Rome, was asked whether he was "familiar with members of the Toccolano Club." The juror responded: "I just know where it is, not really, no." It was subsequently established that the juror had decades earlier himself been a nominal member of the club, and two of his relatives were or had been members.
+After a hearing on defendant's motion, the trial court found there was no improper conduct on the part of the juror, and further that the juror's conduct had not "affected a substantial right of the defendant" (CPL 330.30 [2]). The Appellate Division affirmed. The trial court's undisturbed factual finding has support in the record and, like the alleged excessiveness of defendant's sentence, is beyond the scope of our review.
+Order affirmed in a memorandum.
+
+Kennedy Says He’d Consider a Senate Run If Warren Tapped for VP
+
+A Kennedy in the Senate? Surely you jest.
+
+Get a compelling long read and must-have lifestyle tips in your inbox every Sunday morning — great with coffee!
+
+It’s been seven years since we’ve seen a Kennedy in the Senate. With a little nudge from presumptive Democratic presidential nominee Hillary Clinton, that could soon change.
+
+Congressman Joe Kennedy III told WCVB’s Janet Wu during a Thursday night taping of her show, On the Record, that he would consider a run for Elizabeth Warren’s Senate seat in the event she’s tapped to be Clinton’s running mate this November.
+
+Ted Kennedy won the seat in a special election in 1962 after his brother, John F. Kennedy, was elected president. He held the seat for 47 years until his death in 2009. Joe Kennedy worked on his great-uncle’s re-election campaign in 2006 before enrolling in Harvard Law School, where Warren taught for nearly 20 years.
+
+Cosmo centerfold Scott Brown won the seat in a 2010 special election, defeating Attorney General Martha Coakley. Brown served for just two years before he was ousted by Warren, who became the Bay State’s first female senator. After a failed Senate campaign in New Hampshire, Brown now spends his time calling in to Herald Radio and following Donald Trump around.
+
+Wu’s interview with Kennedy airs Sunday at 11 a.m.
+Characterization of the limited specificity of antigen recognition in earthworms.
+Parenteral administration of foreign proteins results in earthworms in significantly increased levels of the antigen-binding protein (ABP). The earthworms (Lumbricus terrestris and Eisenia foetida; Oligochaeta, Annelida) were stimulated with different proteins and the ABP response was followed with an anti-ABP monoclonal antibody and in ligand assay with biotin conjugates of all proteins used for stimulation. ABP levels are increased after the stimulation with different proteins irrespective of the size and extent of glycosylation. Molar mass of the ABP molecules was always the same, 56 kDa in L. terrestris and 60 kDa in E. foetida. The level of the specificity is considerably lower in comparison with immunoglobulins since ABP reacts not only with the protein used for stimulation but also, though to lesser extent, with related proteins.
+getFromName("_rels/.rels"));
+ foreach ($relations->Relationship as $rel) {
+ if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) {
+ // Found core properties! Read in contents...
+ $contents = simplexml_load_string(
+ $package->getFromName(dirname($rel["Target"]) . "/" . basename($rel["Target"]))
+ );
+
+ foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORE) as $child) {
+ $coreProperties[$child->getName()] = (string)$child;
+ }
+ foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) as $child) {
+ $coreProperties[$child->getName()] = (string)$child;
+ }
+ foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORETERMS) as $child) {
+ $coreProperties[$child->getName()] = (string)$child;
+ }
+ }
+ }
+
+ return $coreProperties;
+ }
+
+ /**
+ * Determine absolute zip path
+ *
+ * @param string $path
+ * @return string
+ */
+ protected function absoluteZipPath($path)
+ {
+ $path = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $path);
+ $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
+ $absolutes = [];
+ foreach ($parts as $part) {
+ if ('.' == $part) {
+ continue;
+ }
+ if ('..' == $part) {
+ array_pop($absolutes);
+ } else {
+ $absolutes[] = $part;
+ }
+ }
+
+ return implode('/', $absolutes);
+ }
+}
+
+AE Works Awarded Design to Upgrade Spinal Cord Injury Center
+
+AE Works to lead design efforts that target expansion of one of the Country’s largest Spinal Cord Injury Centers
+
+Pittsburgh-headquartered architectural and engineering firm, AE Works was recently awarded a contract to provide design and engineering services to renovate and expand the existing Spinal Cord Injury & Disorders Center of Excellence (SCI&D COE) at the Hunter Holmes McGuire VA Medical Center in Richmond, Virginia. Providing critical care for veterans with spinal cord injuries, the Richmond facility is one of the largest of the 25 spinal cord injury centers in the VA Medical Center System.
+
+Anticipating future requirements, the VA Medical Center staff embarked on proactive planning effort to meet the needs of providing critical healthcare services to a growing veteran population throughout five states and the District of Columbia. As a result of these planning efforts, this project will renovate targeted areas of the existing facility and also provide a new 20,000-SF addition to optimize delivery of these specialized clinical services.
+
+Supporting the Department of Veterans Affairs’ commitment to a patient-centered care model that focuses on providing world-class care in a welcoming, healing environment, the design will also focus on infrastructure efficiency, enhancing the patient experience and enriching collaboration opportunities among the hospital’s many clinicians, instructors and researchers.
+
+As a service-disabled veteran-owned small business, projects such as this expansion are especially important to AE Works.
+
+“Our work centers around people and the design of healthcare facilities brings that even more into focus. We feel very fortunate to be a part of this project and the opportunity to have a part in improving healthcare for Veterans,” shares Michael Cherock, PE, AE Works President and Owner.
+
+For more information on AE Works, please visit www.ae-works.com or call Carly Khanna at 301-332-9780.
+
+AE Works Ltd., headquartered in Pittsburgh, PA with satellite offices in State College, PA and Washington DC, specializes in Architecture, MEP Engineering, Telecommunication and Security design services. AE Works Ltd. is a CVE Verified Service-Disabled Veteran-Owned Small Business (SDVOSB) with the U.S. Department of Veteran Affairs.
+
+About The Western PA Healthcare News Team
+
+Throughout the year, our writers feature fresh, in-depth, and relevant information for our audience of 40,000+ healthcare leaders and professionals. As a healthcare business publication, we cover and cherish our relationship with the entire health care industry including administrators, nurses, physicians, physical therapists, pharmacists, and more. We cover a broad spectrum from hospitals to medical offices to outpatient services to eye surgery centers to university settings. We focus on rehabilitation, nursing homes, home care, hospice as well as men’s health, women’s heath, and pediatrics.
+freedom
+
+April 22, 2011
+
+the meds i’m on make it a little difficult to focus,
+but here’s what i’ll say:
+
+whatever you feel about healthcare,
+who gets it, how it’s paid for, and how we deal with it here,
+all i know is that the healthcare system did not fail me.
+without it, i would be dead now.
+
+there are several instances where i came close to it.
+
+don’t get me wrong,
+it was fucking hell (evidence below).and it still is since i’m exactly done with everything.
+there were times where i felt ignored, forgotten,
+like no one would listen to me.
+
+but!
+i’m here.
+and grateful.
+
+like i said,
+the drugs are making it difficult to do normal things.recovering makes it difficult to do normal things.
+
+but in the next couple days,
+i have some yarny goodness planned for you.
+stick with me bitches.
+
+mostly, though, i want to say thank you.
+thank you to all the readers, inter-knitters, and friends
+for your good thoughts, your well wishes, comments and prayers,
+for all the tweets, texts, visits, and vibes from across the globe.
+
+So glad to hear you are home. I wish you a speedy recovery. After my last surgery (double knee replacement), I thought I would get a whole lot of reading done. While on the drugs for a month, I could not focus enough to read a paragraph. What a disappointment! Take it easy and have patience with your recovery. Your body has had a jolt! Donna
+
+I was just thinking of you. I’m glad to hear you are recovering. Being in the hospital sucks. Yes they have the amazing ability to prevent deaths, but still, not a favorite place. Glad you’re home. Here’s hoping for a speedy recovery. (And I do hope you’re able to at least knit.)
+
+Another lurker hoping you have good drugs and a speedy recovery. Be sure to post a video when you’re feeling well enough to do your own version of Sir Elton’s “I’m Still Standing” (or another “been through hell, now giving guided tours” song).
+
+Don’t even care about the yarny goodness, stoked to see that you are back in the world of the living! Hospitals are wonderful for saving lives, but home is where you heal…
+This event even made me a twitter follower, which is saying some as I don’t have a cell phone!
+Relax, think positive thoughts, and play with lots of great yarn!
+
+I’m not religious, but THANK GOD you are okay. You can’t keep a good man down, that’s what I say. . . . I am thinking about medicine/doctors. So many people say- oh, I don’t like to take drugs, let the body heal itself, etc. These are people who have never been critically sick. Once you’ve been there, life/attitudes change.
+It’s like a Alice in Wonderland experience, being critically sick. Or, a crap shoot.
+But, hey, I am glad, so glad, you are on the road to recovery. What a great person you are!
+Nancy Paris
+
+de-lurking to say I’m glad you are home and recovering. It’s scary to rely on others when you’ve been self-sufficient and a hospital seems to be no place to heal….you really need “home” for that. Give yourself plenty of time and don’t overdo.
+After finishing in first place at the Bold Leaders Challenge Feb. 18 and 19 at Fort Knox, Ky., the team qualifies to take part in the Sandhurst Military Skills Competition at the U.S. Military Academy at West Point.
+
+Sandhurst is an inter-company competition at West Point. Not only do West Point teams compete amongst themselves, but they compete against teams from their fellow federal service academies, select teams from the U.S. Army Cadet Command (ROTC), the United States Military Academy Preparatory School team, and international teams. Fifty-five teams will take part in Sandhurst, including international competitors from Great Britain, Australia, Afghanistan and China.
+
+This will be the first time in more than a decade that a Citadel team has competed at Sandhurst.
+
+“We have an exceptional group of young men and women that will represent The Citadel,” said Col. Laurence Hutto, commanding officer of the Palmetto Battalion at The Citadel. “We are excited to be able to compete at this level for the first time in recent years.This is a testament to the commitment, training and leadership of our cadets and the instructors in the Palmetto Battalion.”
+
+The Palmetto Battalion Ranger Challenge team trains seven days a week while maintaining good standing in their academic requirements and cadet duties. They compete in a rapid, timed series military tasks along an eight-mile route.
+
+The Palmetto Battalion Ranger Challenge team trains seven days a week while maintaining good standing in their academic requirements and cadet duties. They compete in a rapid, timed series military tasks along an eight-mile route. The winning squad is determined by the total time required to negotiate the course plus total points scored throughout the two days.
+Making this a weekly event due to interest. BYOB
+
+
+
+OFFICIAL RULES HERE (http://austinpoker.totallyimba.com/?page_id=11)
+
+
+
+Summary:
+
+
+
+6-14 people:
+
+
+
+$20 buy-in Texas Holdem Tourney gets 10,000 in chips
+
+
+
+1 re-buy XOR 1 add-on up until break of 10,000
+
+
+
+15-20 people:
+
+
+
+$20 buy-in Texas Holdem Tourney gets 5,000 in chips
+
+
+
+1 re-buy XOR 1 add-on up until break of 5,000
+
+
+
+Blind levels will be adjusted for lower chip counts. This is due to a limited number of physical chips that can be put in play
+
+
+
+$10 cash game after tourney (re-buy at will until host calls it for the night)
+
+
+
+For now, we'll default to Will's place but if the group decides to float, we'll decide that with at least a day's warning.
+Emergency room outreach to chronically addicted individuals. A pilot study.
+There is a dearth of literature describing the treatment needs of substance-abusing or chronically mentally ill homeless individuals who frequently utilize emergency medical services. This homeless subset represents a discrete population in the larger homeless community. We describe a pilot program, supported by local county public funds, and conducted by a local nonprofit social work agency, which was designed to provide intensive case management services to such a population. Outreach and case management activities resulted in linking clients to a broad range of entitlements and community services. Among those receiving outreach and case management services (n = 10), emergency services decreased by 58% in the year following referral compared to the year before (p <.03). Emergency services for the purpose of this study are defined as ambulance response and transport followed by emergency room admission and treatment. Those in a comparable control group (n = 8) showed no decrease in emergency service use. These results suggest that such community-based outreach programs can significantly improve patient outcome and provide substantial cost savings for local governments and hospitals.
+In 2011 Robert attempted to drink 365 beers in 365 days, and he nailed it! What will he do next?
+
+Saturday, 29 August 2015
+
+August 22, 2015
+
+193/1467) Home: All Natural Blonde by Amsterdam Brewery of Ontario: *; 5%, which goes to show how flexible the definition of light is becoming; grainy nose; bland - just a hint of fruit at finish; I imagine it does pay the rent, though;
+
+194/1468) Home: Molotov Lite by Eviltwin Brewing of Connecticut, U.S.A.: **1/2; 8.5% Imperial India Pale Ale; opaque with a fluffy head; off-orange; earthy and resiny with a touch of citrus to the nose; earthy, resiny flavours with a bitter astringent after taste;
+Such valves are used to adjust and modify the volume flow of a fluid through a fluid channel. It is known in this context that the flow of the fluid through the channel is to be controlled by exerting pressure from the outside on a tube in which the fluid channel is formed, such that the pressure is adjusted as a function of a desired volume flow of the fluid through the channel.
+In medical technology, dosing of volume flows takes place, for example, through microvalves or directly through a corresponding pump with which the fluid to be dispensed is acted upon with pressure. Valves are used in medicine and in the cosmetic field, for example, in injection of medically and cosmetically active substances. In addition to the injection of substances for fat reduction or for injection beneath wrinkles, dosed dispensing of a substance is also necessary for application of ink for tattooing or permanent makeup in the cosmetic field. In addition to various vaccinations, medical applications also include, for example, mesotherapy. In these applications, in addition to the simple application of the media, simultaneous administration of multiple media is also provided, so that the media react with one another only after being applied.
+The dosing of the fluid may be performed by means of a contact method or a noncontact method. The fluid-dispensing device thus either does or does not come in contact with the skin. Noncontact devices are also referred to as so-called dispensers. The process of delivering the fluid is itself known as dispensing, jetting or pulsing. This dosing serves to apply substances to the skin or in subsequent substance delivery systems (cf. EP 1 882 491, for example). Contacting may be understood as dosing onto or through a surface.
+All these applications have in common the need for accurate dosing. Problems are often presented by chemical or fluid properties or particles or variable media.
+The document DE 103 37 484 B4 describes a noncontact dosing system, in which a tube is squeezed at a high speed, so that a free-flying droplet of liquid is formed. Dosing frequencies of 50 Hz may be achieved in this way. The design here is an open system without a prepressure. The liquid fills the tube because of the capillary forces, but the maximum dosing quantity and dosing frequency are limited by this design. If there is a backpressure, functioning is very limited or impossible.
+The document DE 693 25 591 T2 describes valve system for switching a flow through flexible tubes. Two positions (bistable open/closed) are selected via a pivotable lever. The liquids should flow through the valve at the coupled flange of this construction, which is manufactured by casting and welding. Possible contamination of the liquid is not prevented, nor can this principle be used as a disposable part or for higher frequencies (>1 Hz).
+The document EP 1 699 560 B1 describes one possibility for pipetting extremely small quantities, but is based essentially on a combination of traditional pipetting systems and the known PipeJet method, i.e., a tube deformation, embodied in this case as a pipette tip. It is thus possible here to dose only extremely small particles which fly through the air to their destination. This method cannot be used for injections because it is impossible to work at a backpressure.
+The document DE 197 06 513 C2 describes a micro-dosing method based on a pressure chamber having a reservoir connection and a fluid outlet. The pressure chamber is reduced in size by a displacement mechanism, so that the fluid is forced to the outlet. A device for detecting the position of the displacement mechanism is essential here.
+The document US 2010/0030152 A1 describes a therapeutic micro-needle system, in which multiple cannulas are used instead of one cannula.
+Q:
+
+How to check element visibility independent of parent visibility (jQuery or not)
+
+my first Question so please be patient. I have a container that holds a varying number of child elements like this:
+
+
content
+
content
+
content
+
+
+Quick Question:
+Is there a jQuery or plain JS way of checking whether an element container would be visible independent of the parent being visible?
+Simply asking for
+jQuery('.parent .element:visible').length
+
+does not work.
+Background: The parent container can be toggled, and the content of the child elements gets fetched by ajax requests and is filled when the response arrives. On every response I get, the child containers get specific classes indicating the type of the response, e.g. available, unavailable and some more. So the resulting DOM may look like this:
+
+
content
+
content
+
content
+
+
+This is a module, that is used several times with different CSS files. So I do not control whether the CSS implementation actually hides unavailable elements because this is done only in CSS. And the container can be open, but does not have to. But I have to know if there would be visible elements inside of the container without opening it. Is this possible?
+Thanks in advance!
+
+A:
+
+I'm not sure why you need to do this if you have classes like available or unavailable. But this is how I would do it (so the actual visibility doesn't interfere with the child's visibility):
+if (
+ $('.element').css('display') != 'none' &&
+ $('.element').css('visibility') != 'hidden'
+) {
+ // ...
+}
+
+In action:
+http://jsfiddle.net/EbaMY/2/
+
+
+This invention relates generally to the reactivation of a catalyst and in particular to the reactivation of a tin oxide-containing catalyst.
+New approaches for extending the life of lasers used in a wide variety of applications are under investigation. One aspect of the rapid progress in this area is that new techniques for long lifetime space applications of high pulse energy, common and rare isotope, closed-cycle CO.sub.2 lasers are being studied. The high-energy, pulsed CO.sub.2 lasers must be operated closed-cycle to conserve gas, especially if rare-isotope gases are used. Rare-isotope gases, such as C.sup.18 O.sub.2 are used for improved transmission of the laser beam in the atmosphere.
+The electrons in electric-discharge CO.sub.2 lasers cause dissociation of some CO.sub.2 into O.sub.2 and CO and attach themselves to electronegative molecules such as O.sub.2, forming negative O.sub.2.sup.- ions, as well as larger negative ion clusters by collisions with CO or other molecules. For closed-cycle, sealed CO.sub.2 laser operation, the concentration of negative ions/clusters may become sufficiently high to form discharge instabilities which may ultimately disrupt the CO.sub.2 laser operation. The decrease in CO.sub.2 concentration due to dissociation into CO and O.sub.2 will reduce the average repetitively pulsed or continuous wave laser power, even if no disruptive negative ion instabilities occur.
+Accordingly, it is the primary object of this invention to extend the lifetime of a catalyst used to combine the CO and O.sub.2 products formed in a laser discharge.
+It is a further object of this invention to accomplish the primary object simply and inexpensively.
+Other objects and advantages will be apparent in the specification which follows.
+Attack on Iran: Hitlerian Act of Aggression
+
+Essential Reading Regarding Iran by Tony Cartalucci
+
+November 6, 2011 - As the rhetoric for war with Iran begins to mount, first with the staged DEA-Saudi bomb plot, and now with an upcoming IAEA report supposedly "exposing" Iran's nuclear arms ambitions, it is important to re-read through the signed confessions by the corporate-fascist interests behind this drive for war where it is admitted that:
+
+1. Iran poses no threat to US national security - even if they acquired nuclear arms- rather Iran threatens US interests throughout the Middle East, half-way across the planet.2. Iran desperately wants to avoid armed conflict with both Israel and the West and would use nuclear weapons merely as a defensive deterrence.3. The US and Israel are actively looking to provoke Iran into war with a combination of covert support for destabilization within Iran, supporting listed terrorist organizations, and limited unilateral military first strikes to provoke an Iranian response needed to justify a wider military confrontation.
+
+All of this is shockingly spelled out in extreme detail within the pages of the corporate-financier funded Brooking Institution report, "Which Path to Perisa?" It is essential that every American, European, and Israeli read just how malicious, callus and eager the globalist elite are to trigger a catastrophic war with the Islamic Republic for the sole purpose of protecting Wall Street and London's hegemony throughout the Middle East.
+
+Below are links to efforts to cover in detail the key aspects of this increasing war mongering, the key players behind it, including the corporations funding this agenda, as well as irrefutable evidence that illustrates these designs, laid out in 2009 have already begun to unfold.
+
+Upon reading this information, one will realize with horror how patiently persistent the corporate-financier interests on Wall Street and London have pursued this campaign towards war with Iran, and how absolutely deceitful they are willing to be in order to keep it moving forward. It is absolutely imperative that people understand not only just how contrived the treat of Iran is, but that those peddling the lies of such a threat have, behind closed doors, admitted as much.
+
+Image: Just some of the corporate-sponsors behind the unelected, warmongering "think-tank" Brookings Institution which produced the treasonous "Which Path to Persia?" report.
+
+....
+
+Please also take particular note of the corporations funding this act of Hitlerian aggression against a nation of 70 million at the potential loss of tens of thousands of American and Israeli (and other proxy soldiers') lives, not to mention the incalculable cost of the war to an already crippled American tax payer. Also note that these same corporations will not be losing their sons and daughters nor a single penny in the war effort, in fact, many of them stand to gain untold of fortunes and power - the very reason they are pursuing such a course of action.
+
+Now would be a good time to contact your representatives, boycott the above mentioned corporations, and begin undermining a system that is parasitically bleeding this planet to death both financially and literally in pursuit of global corporate-fascist hegemony. And remember, it will not end in Iran, the attack and destruction of Iranian sovereignty is just the beginning.
+Q:
+
+Volume rendering in WebGL
+
+I have:
+
+a 3D array containing a 3d dataset to be displayed
+a 4x4 matrix which defines spacing/scaling/orientation of the volume to be displayed
+a opacity transfer function
+a color transfer function
+
+I would like to use ThreeJS to do volume rendering (MIP, RayCasting, etc.) of this data. Are there some shaders/demos available?
+Should I work directly at the shader level or in javascript?
+Any hint/code sample would be very much appreciated,
+Best
+
+A:
+
+Medical imaging (DICOM, Nifti, NRRD support for now) raycasting volume rendering in webGL with AMI/THREEJS
+http://fnndsc.github.io/ami/#vr_singlepass_raycasting
+
+
+2 Answers
+2
+
+The first two. Christopher Lloyd's character, Judge Doom, is the big conspirator organising the whole situation, but it's the head of Roger's studio, R. K. Maroon, who does the actual setup.
+
+He was the one to setup the situation between Acme and Jessica (the patty-cake), and he was also the one to hire Eddie Valiant to take pictures of the meeting. Then later when Valiant meets with Maroon to show him the results, they show Roger the pictures and he runs off to write his love poem, causing him to not have an alibi for the murder.
+
+Judge Doom convinces Maroon to do all of this by agreeing to buy his company, but only if he can also buy Acme at the same time. However it was never Maroon's intention for there to be a murder, he was just hoping to blackmail Acme into selling.
+
+No, you gotta understand, Valiant, I had nothin' to do with Acme gettin' killed. I just wanted to sell my studio. But they wouldn't buy my property unless Acme would sell his. And he wouldn't. So I was gonna blackmail Acme with pictures of him and the rabbit's wife.
+
+Judge Doom wanted to buy ToonTown but Marvin Acme wouldn't sell. Accordingly, Doom asked R.K. Maroon to blackmail Acme. As a result, Doom knew Maroon had shown Roger evidence that Jessica Rabbit was having an affair with Acme. So Doom used the opportunity to kill Acme, hoping everyone would think Roger did it.
+
+Though Acme's murder is not shown in the movie, what happened is confirmed by Jessica Rabbit's dialogue: Judge Doom killed Marvin Acme and framed Roger Rabbit.
+Para que llegue un jugador a Newell's como refuerzo, antes la directiva rojinegra debe cumplir un paso previo: vender. Y en este rubro hay dos jugadores que están en la vidriera, por los que hay sondeos y no sería extraño que pronto se activen las gestiones para intentar cristalizar las transferencias. Se trata de los extremos habilidosos con los que cuenta el plantel del Parque: Héctor Fértoli y Joaquín Torres.
+
+Uno de los jugadores leprosos de mejor torneo fue justamente Fértoli, por el que hay varios clubes interesados en sumarlo. Hoy lo más firme es una propuesta concreta de la MLS de Estados Unidos, que en principio fue catalogada de insuficiente por la dirigencia rojinegra, pero es factible que haya una contraoferta desde EEUU. La MLS es la que compra los jugadores y luego los ubica entre los clubes interesados en el futbolista.
+
+Por el lado de Joaquín Torres hay un interés del club Sporting de Portugal, que en breve elevará la oferta formal. Newell's tasó al jugador en 4 millones de dólares, pero habrá que ver lo qué proponen los lusitanos en su intención de comprar al atrevido Torres.
+Q:
+
+How to call a MainWindow method from another window?
+
+I need to call a method from the MainWindow in another window.
+Problem is i don't know why i got an error and i would like to fix it.
+I tried to call the fonction using various ways, none of them worked.
+Here is my last try :
+What i want to call :
+namespace Class1
+{
+ public partial class MainWindow : Window
+ {
+ ...
+ public void SkipVideo()
+ {
+ ...
+ }
+ }
+}
+
+Here is how i tried to call :
+namespace Class1
+{
+ public partial class TimeWindow : Window
+ {
+ ...
+ private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
+ {
+ ((MainWindow)Application.Current.MainWindow).SkipVideo();
+ }
+ }
+}
+
+There is no build error, but when i run the program, it does this :
+System.InvalidCastException: 'Unable to cast object of type 'Class1.TimeWindow' to type 'Class1.MainWindow'.'
+
+A:
+
+The InvalidCastException means that your application's mainwindow is a TimeWindow.
+Provided that there actually is a MainWindow open, you can get a reference to it like this:
+private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
+{
+ MainWindow mainWindow = Application.Current.Windows.OfType().FirstOrDefault();
+ if (mainWindow != null)
+ mainWindow.SkipVideo();
+}
+
+There are better ways to handle this, for example using the MVVM design pattern as suggested by @Christopher, but this is probably the easiest one given your current setup.
+
+
+## About this example
+This example is a [quickstart](https://eggjs.org/zh-cn/intro/quickstart.html) of Egg, it includes the basic and comprehensive usages of Egg such as Controller, Service and some
+simple configurations, moreover, it has the corresponding unit tests. you can follow this simple example and build your Egg application step by step.
+
+## How to run it locally
+
+### Development
+```shell
+$ npm install
+$ npm run dev
+$ open http://localhost:7001/
+```
+
+### Deploy
+
+Use `EGG_SERVER_ENV=prod` to enable prod mode
+
+```shell
+$ EGG_SERVER_ENV=prod npm start
+```
+
+### Npm Scripts
+
+- Use `npm run autod` to auto detect dependencies upgrade
+- Use `npm run lint` to check code style
+- Use `npm test` to run unit test
+
+### Requirement
+
+Please ensure your node version is `>=8.0` for Egg2.x.
+
+
+## some problems you might encounter
+- lack of MVC model development experience, click [here](https://www.zhihu.com/question/27897315) to learn more
+- some concepts such as middleware, extend, helper are difficult to understand, see related [docs](https://eggjs.org/) to know more
+- encounter some errors during development, find [issues](https://github.com/eggjs/egg/issues) to check if some solutions have been provided
+
+Joseph Amoah (sprinter)
+
+Joseph Paul Amoah (born 12 January 1997) is a Ghanaian sprinter specializing in the 100 metres and the 200 metres. He competed at the 2019 World Athletics Championships in the 100 metres and 4 × 100 metres relay, and at the 2019 African Games he won a gold medal in the 4 × 100 metres relay. He was also a 100 metres finalist at the 2019 African Games, finishing fourth.
+
+Amoah has personal best times of 10.01 seconds and 20.08 seconds in the 100 metres and 200 metres respectively, both set at the 2019 NCAA Division I Championships. His personal best performance in the 200 metres broke the Ghanaian record previously held by three-time Olympian Emmanuel Tuffour by 0.07 seconds.
+
+Early life
+Amoah was born on 12 January 1997 to Thomas and Alberta Amoah in Greater Accra, Ghana, and was raised by his uncle Dr. Victor Antwi from middle school onwards. His preferred sport growing up was football, but transitioned to athletics while attending Prempeh College in Kumasi where his running talent was discovered. As a 19-year old he emerged as an Olympic hopeful for Ghana in the sprints after running 100 metres in 10.08 seconds at the 2016 Ghana's Fastest Human competition.
+
+University
+After his prep career at Prempeh College, he decided to quit athletics when enrolling into Kwame Nkrumah University of Science and Technology (KNUST). However the head coach of athletics at KNUST had heard of Amoah's talent while at Prempeh college and convinced Amoah to join the team with the help of his uncle. In 2017 he transferred to Coppin State University in Baltimore, which competes in Division I of the National Collegiate Athletic Association (NCAA), the highest level of intercollegiate athletics in the United States.
+
+At the 2019 Mid-Eastern Athletic Conference Championships in May, Amoah became the first Ghanaian in any sport to qualify for the 2020 Summer Olympics by running 200 metres in a personal best time in 20.20 seconds. It was the fastest performance from a Ghanaian since 1995 and also qualified him for the 2019 World Athletics Championships. Later in June of that season at the NCAA Division I Championships, he improved his personal best times in the 100 metres and 200 metres to 10.01 seconds and 20.08 seconds respectively. He broke three-time Olympian Emmanuel Tuffour's 24-year old Ghanaian record in the 200 metres (20.15 seconds, set at altitude), and qualified for the 2020 Summer Olympics in the 100 metres.
+
+Achievements
+
+International championships
+
+National championships
+
+References
+
+External links
+
+Category:Ghanaian male sprinters
+Category:1997 births
+Category:Living people
+Category:People from Greater Accra Region
+Category:World Athletics Championships athletes for Ghana
+Category:Athletes (track and field) at the 2019 African Games
+Category:African Games medalists in athletics (track and field)
+Category:Coppin State University alumni
+Category:Prempeh College alumni
+Consanguineous unions and endogamy in families of beta-thalassaemia patients from two Mediterranean populations: Tunisia and Italy.
+Background: Consanguinity increases the incidence of recessive diseases such as beta-thalassaemia major (βTM), one of the most prevalent lethal inherited diseases in the world.Aim: This study aims to identify the frequency of endogamy and consanguinity in two Mediterranean βTM populations and to study the implication of socio-economic factors.Subjects and methods: A trans-sectional study was conducted in 203 Tunisian families and 75 Italian families. Data were collected using a questionnaire completed by patients and parents.Results: Complete endogamy and consanguinity were observed in 82.75% and 62.56% of Tunisian families, respectively. Complete endogamy was found in 90.67% of Italian families, no consanguinity was noted. The low occupation status of Tunisian mothers was associated with an increasing frequency of consanguinity (p = .01) and endogamy (p = .0003). Consanguinity was associated with low education level (p = .012) and low occupation status (p=.047) of fathers. No significant association was found between endogamy and socio-economic factors in the Italian sample.Conclusions: High consanguinity and endogamy rates in Tunisian families may explain the frequency of βTM in Tunisia. The high endogamy rate in Italian families could also increase the frequency of βTM. Identification of geographical distribution and socio-economic factors leading to endogamy and consanguinity in these populations might help to improve βTM prevention.
+Purchasing
+
+Violation/Penalties
+
+Purchasing Violations:
+
+What is a purchasing violation?
+Section 31-7-57 of the MS Code states that when an employee receives goods or services without a purchase order, the agency has no liability for the bill. The employee is held personally liable.
+
+A purchasing violation is committed when an employee receives goods or services without a purchase order
+
+A purchasing violation is when an office prepares intentionally two or more office requisitions to the same vendor when one order combined is greater than $1,500. This is done to avoid getting written quotes/sealed bids. This is called splitting a purchase order.
+
+A violation is when an employee personally utilizes a rebate, gift or prize given to the agency by a vendor.
+
+PLEASE NOTE: When any employee orders or receives goods/services in the name of the Department of Education before requesting a purchase order, the employee will be held personally liable for the bill. Do not send the requisition and invoice to Accounting.
+
+UNALLOWABLE AGENCY PURCHASES
+
+Individual membership to professional organizations
+
+Individual Chamber of Commerce membership
+
+Individual personalization of planners, portfolios or briefcases
+
+Certificates to state employees, public officials or board members
+
+Plaques to state employees, public officials or board members
+
+Awards to state employees, public officials or board members
+
+PENALTIES FOR PURCHASING VIOLATIONS
+
+Reprimands
+
+Loss of Job
+
+Fines
+
+Imprisonment
+
+Repayment of misspent funds
+
+Vendor will re-bill order to the individual
+
+Sole Source Justification:
+The sole source justification letter should include the following information:
+
+What will the product be used for?
+
+Is it compatible with existing equipment?
+
+Will the product be used for testing or trial use only?
+
+Do other companies make similiar products that are acceptable?
+
+How is the product special or unique?
+
+What can this product do that other products cannot do?
+
+Is there a copyright or patent on this product?
+
+Is the manufacturer the only distributor?
+
+Does the manufacturer only sell to specific distributors instead of direct sales?
+Introduction {#s1}
+============
+
+In recent years there has been a substantial increase in the use of mass drug administration (MDA) to reduce the morbidity associated with helminth infections of humans [@pntd.0000211-Lammie1], increasing the probability that anthelmintic resistance may become a public health concern in the future. One such annual MDA programme is the Global Programme to Eliminate Lymphatic Filariasis (GPELF) which, in 2005, treated over 145 million people with albendazole (a broad spectrum benzimidazole anthelmintic) in combination with either ivermectin or diethylcarbamazine [@pntd.0000211-WHO1]. GPELF targets mainly *Wuchereria bancrofti*, the most widely distributed of the filarial parasites of humans.
+
+Sensitive molecular assays are required to detect the presence of anthelmintic resistance before widespread treatment failure is apparent, drug resistance becomes disseminated and disease control is jeopardised [@pntd.0000211-Roos1]. Surveys of helminth parasites of humans are being conducted to establish whether genetic changes at certain polymorphic loci (associated with resistance to the same or related drugs used against veterinary helminths), are present in these populations and subject to detectable selection under chemotherapeutic pressure [@pntd.0000211-Albonico1]--[@pntd.0000211-Schwab1]. A phenylalanine to tyrosine substitution at position 200 on the β-tubulin isotype 1 molecule has been identified in a number of helminth parasites of farmed ruminants including *Haemonchus contortus* [@pntd.0000211-Kwa1],[@pntd.0000211-Kwa2], *Cooperia oncophora* [@pntd.0000211-Njue1], and *Teladorsagia circumcincta* [@pntd.0000211-Elard1] and is associated with benzimidazole (BZ) resistance in these species. Worryingly, this genetic change has also been identified in *W. bancrofti* [@pntd.0000211-Schwab1], though the phenotypic studies relating the substitution to a decreased albendazole efficacy have not been undertaken in this species. To aid clarity the two alleles at position 200 on the β-tubulin isotype 1 molecule shall be referred to as allele *F* (phenylalanine) for susceptibility and allele *Y* (tyrosine) for putative resistance.
+
+Inbreeding, the mating of related individuals, influences parasite genotype distribution and can affect the selection of adaptive traits. Facets of a species\' biology may cause parasite inbreeding, such as population structure or assortative mating (when mate choice is determined by phenotype). Parasite allele frequency can differ between infrapopulations (the populations of parasites within individual hosts) due to the ecology of the infection or through the random nature of infection events (all groups may have an equal probability of having a rare allele, but actual numbers may vary between groups by chance). Helminth parasites have a particularly subdivided population structure as adult worms are confined within their definitive host, and only able to mate with other worms that belong to the same infrapopulation. The population genetic structure of most helminth species remains unknown. The few studies that have been undertaken indicate that whilst some species appear to have no apparent genetic structure others exhibit a high degree of parasite genetic differentiation between hosts [@pntd.0000211-Criscione1]. The degree of genetic differentiation in the parasite infrapopulation can shed insight into the microepidemiology of parasite transmission [@pntd.0000211-Anderson1]--[@pntd.0000211-Thron1]. Infrapopulation genetic differentiation will also influence helminth population genetics as it causes a reduction in the frequency of heterozygote offspring, a phenomenon known as the Wahlund effect [@pntd.0000211-Hartl1].
+
+Studies investigating the inheritance of benzimidazole resistance are lacking, though evidence indicates that thiabendazole resistance in *H. contortus* may be a semi-dominant trait [@pntd.0000211-LeJambre1]. Other authors have postulated that alleles conferring anthelmintic resistance, including allele *Y*, are likely to be recessive [@pntd.0000211-Elard1],[@pntd.0000211-Prichard1], which would make heterozygote worms susceptible to treatment. If an allele conferring drug resistance is recessive, excess parasite homozygosity will increase the probability that a resistance allele will survive treatment. This has been shown using genetic metapopulation models investigating nematodes of grazing animals; these models indicate that the spread of rare recessive genes is promoted by hosts accumulating multiple related infections simultaneously [@pntd.0000211-Cornell1],[@pntd.0000211-Smith1]. The degree of parasite genetic differentiation among hosts can be quantified using *F~ST~* (or related analogues; see [@pntd.0000211-Criscione1] and references therein).
+
+The adult stages of the majority of parasitic helminths of humans cannot be obtained routinely for direct investigation, so genetic surveys (including those investigating drug resistance) resort to sampling transmission stages, i.e. those (immature) life-stages that gain access to the environment to be transmitted to and from hosts or through vectors [@pntd.0000211-Schwab1], [@pntd.0000211-Curtis1]--[@pntd.0000211-Shrivastava1]. However, the results of these surveys should be interpreted with caution, as the underlying allele frequency of the adult worm population may differ from the allele frequency of the sampled transmission stages. Variations in transmission stage allele frequency and genotype distribution could be generated randomly or be a product of the parasite\'s spatial structure and life-history traits. For example, population subdivision will cause random variation in adult worm allele frequencies between hosts at low parasite densities. Filarial parasites have separate sexes and are thought to be polygamous [@pntd.0000211-SchulzKey1], which may accentuate the variability in microfilarial allele frequency, e.g. a rare allele may be highly over-represented in the subsequent generation if, by chance, a male worm with this allele inhabits a host harbouring females but no other males. In addition, the inherent random sampling of gametes during sexual reproduction [@pntd.0000211-Weir1], and the overdispersed distribution of parasite numbers among hosts [@pntd.0000211-Anderson2] may cause the allele frequency and genotype distribution to vary by chance from generation to generation.
+
+This paper analyses population genetic data collected for a study by Schwab *et al.* [@pntd.0000211-Schwab1] who identified the presence of the β-tubulin allele *Y* in populations of *W. bancrofti*. Firstly, the extent of parasite inbreeding is estimated from *W. bancrofti* microfilarial samples taken from patients in Burkina Faso, West Africa. Samples were obtained from different villages, some of which had received a single round of MDA with ivermectin and albendazole, under the auspices of the GPELF. Secondly, an individual-based stochastic model is presented which simulates microfilarial genetic diversity from adult worm allele frequencies. The model generates sample allele and genotype frequencies using the same number of hosts, and the same number of microfilariae per host as in Schwab *et al.* [@pntd.0000211-Schwab1]. This model is then used to assess whether the observed level of parasite inbreeding is the result of a sampling artefact or a true biological phenomenon. Finally, the model is used to assess the likely range of adult worm allele frequencies which could have given rise to the observed microfilarial data, providing some insight into how genetic surveys which sample transmission stages should be interpreted. We discuss the implications of our results in terms of the development and detection of anthelmintic resistance.
+
+Materials and Methods {#s2}
+=====================
+
+Sampled data {#s2a}
+------------
+
+[Table 1](#pntd-0000211-t001){ref-type="table"} summarises the data collected for the study by Schwab *et al.* [@pntd.0000211-Schwab1] and indicates the number of microfilariae and hosts sampled. The village of Gora was removed from the *F*-statistic analysis since only one host was sampled in this village. In some hosts it was possible to genotype only a few microfilariae, increasing the uncertainty associated with estimation of underlying infrapopulation allele frequencies in these hosts. Results are grouped according to parasite treatment history. The average frequencies of allele *Y* in microfilarial samples from untreated and treated hosts were 0.26 and 0.60, respectively [@pntd.0000211-Schwab1]. The degree of parasite heterozygosity (the proportion of microfilariae with the heterozygote genotype) is estimated for each village. The table also indicates the deviation of each population from the Hardy-Weinberg Equilibrium (HWE), which gives the proportion of heterozygote microfilariae that would be expected in a randomly mating population. This reveals a strong deficit of heterozygotes in all three populations.
+
+10.1371/journal.pntd.0000211.t001
+
+###### Summary of the genetic survey conducted on *Wuchereria bancrofti* microfilariae from Burkina Faso of genetic changes at the β-tubulin locus associated with benzimidazole resistance (in nematodes of ruminants).
+
+![](pntd.0000211.t001){#pntd-0000211-t001-1}
+
+ Village No. hosts sampled Mean no. of microfilariae genotyped per host (range) Mean microfilaraemia per 20 µl blood (range) Sample (microfilarial) resistance allele frequency, Sample and \[expected\] heterozygosity
+ ------------------------------------------------------------------------------ ------------------- ------------------------------------------------------ ---------------------------------------------- ----------------------------------------------------- ----------------------------------------
+ Untreated villages
+ TANGONKO 16 9.6 (1, 15) 323 (162, 703) 0.28 0.20 \[0.40\]
+ BADONGO 14 6.6 (1, 10) 212 (60, 845) 0.23 0.24 \[0.35\]
+ Village that had received one round of chemotherapy (albendazole+ivermectin)
+ PERIGBAN 13 8.5 (3, 12) 35 (18, 86) 0.62 0.27 \[0.47\]
+
+Results were presented by Schwab *et al.* [@pntd.0000211-Schwab1]. The range of microfilarial samples obtained per host is given in brackets. The expected microfilariae heterozygosity according to the Hardy-Weinberg equilibrium is given in square brackets.
+
+In this paper, we refer to two different types of allele frequency: (1) the underlying frequency of the allele putatively associated with BZ resistance, with *q^l^* denoting the allele frequency of the entire parasite population of a given locality, and (2) the parasite allele frequency within the host population that is sampled, denoted by *^H^q^l^*. The superscript *l* denotes the parasite life-stage under investigation, be it microfilariae (*l = M*) or adult worms (*l = W*), and *H* denotes definitive host. The allele frequency estimated from the sample, , may not correspond to the true underlying allele frequency, *q^l^*, either because the hosts sampled are not representative of the whole host population, or because the parasites genotyped do not represent adequately the allele frequency within the host.
+
+Estimating parasite inbreeding {#s2b}
+------------------------------
+
+By genotyping transmission stages before they leave the definitive host prior to the introduction of mass chemotherapy, insight can be gained into the different causes of microfilarial excess homozygosity. If it is assumed that the number of microfilariae produced, their survival, and their probability of being sampled are independent of their genotype (as we do in the null model), it can be assumed that deviation from the HWE may be the result of non-random mating. If the locus being investigated is not under selection, the excess microfilarial homozygosity will most likely be the result of either infrapopulation genetic differentiation or non-random parasite mating within hosts. Genotyping transmission stages would allow the relative contributions of each of these two sources of inbreeding to be estimated. The variation in the allele frequency between hosts will account for some of the excess homozygosity whilst deviation from the HWE in the microfilariae within an individual host will indicate possible non-random mating within the infrapopulation.
+
+The Wright\'s hierarchical *F*-statistic is used to investigate the correlation of parasite genes within and between human hosts [@pntd.0000211-Curtis1]--[@pntd.0000211-Paterson1],[@pntd.0000211-Brouwer1]. It is assumed that the infrapopulation is the first hierarchical group in the parasite population, and *F~IS~* is defined as the correlation of genes between microfilariae within the infrapopulation; , as the correlation of microfilarial genes between different hosts living in the same village; , as the correlation of microfilarial genes between different villages within the overall microfilarial population; and *F~IT~*, as the correlation of genes between individual microfilariae relative to the overall microfilarial population of the region. The different inbreeding terms introduced are summarized in [Table 2](#pntd-0000211-t002){ref-type="table"}. A value of *F~IS~* is significantly greater than zero points towards adult worm non-random mating, indicates variation in worm allele frequency between hosts, and suggests differences in the worm allele frequency between villages. The same statistical frameworks used to estimate Wright\'s *F*-statistic were employed here, taking into account variable sample sizes [@pntd.0000211-Weir1]. Estimates of the 95% confidence intervals for *F~IS~*, and *F~IT~*, were generated by bootstrapping simultaneously worms within each host and bootstrapping over hosts within each village [@pntd.0000211-Efron1]. *F-*statistics, and their associated uncertainty, were calculated for each village.
+
+Modelling the allele frequency and genotype distribution of microfilariae {#s2c}
+-------------------------------------------------------------------------
+
+A dioecious adult worm helminth population with a 1:1 male to female ratio was randomly generated for a given mean number of worms per host and degree of parasite overdispersion (as determined by the *k* parameter of the negative binomial distribution, parameterized following [@pntd.0000211-Anderson2]). Each adult worm infrapopulation was randomly allocated an allele frequency, as analysis of pre-treatment data did not detect any significant relationship between the host\'s frequency of allele *Y* and microfilarial burden. The adult worm allele frequency of each host was randomly selected according to the given underlying allele frequency, *q^W^*, and the degree of parasite genetic differentiation between hosts, . For a description of a method for generating the distribution of allele frequencies in a subdivided population using the beta distribution [@pntd.0000211-Wright1], see Porter [@pntd.0000211-Porter1].
+
+It is again assumed that microfilarial production and survival is independent of genotype, allowing a microfilarial population for each host *i* to be generated according to the size and allele frequency of the adult worm infrapopulation. Worms were assumed to be polygamous; implying that if only one male parasite were present within a host, all fertile females within that infrapopulation would be mated. The number of microfilariae produced by each parasite infrapopulation was assumed to be proportional to the number of fertilised females within that host. It was also assumed that gametes separate independently and re-assort according to the degree of non-random mating (*F~IS~*). The probability with which a microfilaria within host *i*, will be of genotype *j* is denoted , and given by the equations, where and are, respectively, the frequency of allele *Y* in the male and female adult worms within host *i*, and and are the corresponding susceptible allele *F* frequencies. To allow random stochastic fluctuations in genotype distribution, the actual number of microfilariae in host *i* with genotype *j* follows a binomial distribution, with the number of trials being equal to the number of microfilariae produced by host *i*, with genotype probability equal to .
+
+Microfilarial allele frequencies and genotype distributions were generated by sampling a specific number of microfilariae from the generated hypothetical population according to the sampling scheme used in Schwab *et al.* [@pntd.0000211-Schwab1]. The exact number of samples taken from each of the 30 hosts was: 11, 10, 15, 9, 11, 9, 13, 10, 10, 7, 10, 10, 7, 1, 11, 9, 1, 7, 4, 1, 10, 9, 8, 6, 4, 6, 9, 10, 10, 8, for a total of 246 microfilariae. Analysis of pre-treatment data had indicated that the number of samples taken from each host by Schwab *et al.* [@pntd.0000211-Schwab1] was independent of host microfilaraemia and host allele frequency, allowing the number of microfilariae sampled per host to be randomly allocated. The program code for the simulations implemented was written in C++ and run 100,000 times, with each run generating a new helminth population and genotype distribution from which 95% confidence limits (95% CL) were calculated.
+
+The model was parameterised for the untreated villages of Tangonko and Badongo, Burkina Faso, which had an initial prevalence of microfilaraemia of 25%. The mean adult worm burden was estimated from observed microfilarial counts using the functional relationship given in the deterministic model EPIFIL (see original formulation and parameter values in Norman *et al*. [@pntd.0000211-Norman1]), giving a mean adult worm burden of 13.5 host^−1^. The degree of adult worm overdispersion was estimated from the recorded microfilarial prevalence (taken here as a proxy for the prevalence of adult worms producing microfilariae) and the mean adult worm burden, using the prevalence vs. intensity relationship that derives from assuming a negative binomial distribution of worms among hosts [@pntd.0000211-Anderson2], yielding a *k* value of 0.07. The model outlined above will only be valid for comparisons against the pre-treatment data, since chemotherapy is known to impede microfilarial production and / or survival [@pntd.0000211-Tisch1].
+
+The null model assumes that mating is random between male and female worms within each infrapopulation and that allele *Y* is randomly distributed across hosts, i.e. . Results of the inbreeding analysis can be incorporated into the individual-based model described in equations (1) to (3) to explore the range of adult worm allele frequencies which can give rise to the observed microfilarial data.
+
+Results {#s3}
+=======
+
+The observed microfilarial genotype distribution was found to deviate from HWE. Villages with no history of mass anthelmintic chemotherapy had an overall inbreeding coefficient of *F~IT~* = 0.44 (95% CL = 0.17, 0.68), indicating strong inbreeding. Fifteen percent of the microfilariae were found to be homozygous for allele *Y*, an estimate 2.3 times higher than would be expected in a random mating parasite population. Results indicate the occurrence of a significant degree of genetic differentiation in worm allele frequency among the host population . Infrapopulation allele *Y* frequency, , varied from 0 to 0.77 in the villages with no history of treatment, indicating an increase in microfilarial homozygosity of 60% above HWE. The results also suggest a degree of non-random mating within hosts measured by *F~IS~* = 0.29 (−0.09, 0.54), which is however is not significantly greater than zero. No difference was observed in the microfilarial allele frequency between the two treatment-naïve villages .
+
+The data from the two treatment-naïve villages of Tangonko and Badongo were analysed separately. Both showed a high level of microfilarial homozygosity, with overall inbreeding coefficient of *F~IT~* = 0.51 (0.16, 0.76) and *F~IT~* = 0.33 (−0.10, 0.78), respectively ([Figure 1](#pntd-0000211-g001){ref-type="fig"}). The degree of parasite genetic differentiation between hosts varied between the two villages, though the difference was not statistically significant (*p* = 0.38, calculated from the square of the normalized difference in *F~ST~* estimates [@pntd.0000211-Little1]). For the purpose of the following analysis the two treatment-naïve villages have been grouped together to increase the study sample size. A similar degree of parasite inbreeding was observed in the village of Perigban which had received one round of MDA.
+
+![Estimates of Wright\'s *F*-statistics in *Wuchereria bancrofti* for the pre-treatment villages of Tangonko (black diamonds), Badongo (grey open circles) and for the treated village of Perigban (black squares), which received one round of chemotherapy (albendazole+ivermectin).\
+The error bars are the 95% confidence intervals. *F~IT~* estimates the total degree of parasite inbreeding; *F~IS~* describes the level of non-random mating within the infrapopulation; and shows the variation in microfilarial allele frequency within the host subpopulation (village).](pntd.0000211.g001){#pntd-0000211-g001}
+
+Parasite inbreeding increases the range of underlying adult worm allele *Y* frequencies, *q^W^*, which can give rise to the observed microfilarial allele *Y* frequency of 0.26 ([Figure 2](#pntd-0000211-g002){ref-type="fig"}). Results from the null model, where mating was assumed to be random and allele *Y* is randomly distributed amongst hosts, indicate that *q^W^* in the untreated villages of Tangonko and Badongo could range from 0.21 to 0.32. If we use the excess inbreeding estimate reported in pre-treatment villages (*F~IT~* = 0.44), then model simulations suggest that *q^W^* could range from 0.18 to 0.37.
+
+![The impact of inbreeding on the relationship between the sample microfilarial allele frequencies, , and the (inferred) underlying adult worm allele frequency, *q^W^*, for the substitution at codon 200 of the β-tubulin gene in *W. bancrofti*.\
+The figure shows 95% confidence intervals for a population with no excess inbreeding (the null model, dark grey shaded area), and a population with the observed levels of inbreeding (*F~IS~* = 0.28, , light grey shaded area). Simulations are based on the same sampling scheme used in Burkina Faso [@pntd.0000211-Schwab1]. The thick black solid line indicates the mean result for both models. The observed pre-treatment microfilarial allele frequency (; black thin, horizontal dotted line) was compared to simulation results to indicate the possible range of adult worm allele frequencies which could have given rise to the West African data. The null model (black vertical dotted-dashed lines) indicated values of *q^W^* ranging from 0.21 to 0.32 compared to the inbred model (*F~IS~* = 0.28, , black vertical dashed lines), which gave values of *q^W^* between 0.18 and 0.37.](pntd.0000211.g002){#pntd-0000211-g002}
+
+The microfilarial genotype diversity model indicates that the observed homozygosity is unlikely to be solely a result of genetic sampling, demographic stochasticity, population subdivision, or the sampling scheme employed, suggesting that true biological mechanisms are operating in the parasite population even before the introduction of anthelmintic therapy. [Figure 2](#pntd-0000211-g002){ref-type="fig"} indicates the range of likely microfilarial genotype distributions that can be generated from a given *q^W^* value using the null (random) model. The observed excess homozygosity in the untreated villages was greater than the 95% confidence interval estimates generated by the null model ([Figure 3](#pntd-0000211-g003){ref-type="fig"}). It is interesting to note the wide range of microfilarial genotype distributions that can be generated by the null model.
+
+![De Finetti diagram showing the genotype distribution of *W. bancrofti* microfilariae generated from a given underlying adult worm allele frequency, *q^W^*, taken from villages prior to the introduction of chemotherapy.\
+A full explanation of the De Finetti diagram is given in [@pntd.0000211-Hartl1]. The black diamond represents the value originating from the observed data (with , and *F~IT~* = 0.44), and the error bars indicate the uncertainty in genotype distribution stemming from the values of *q^W^* (0.21, 0.32) that were estimated from the null (random) model ([Figure 2](#pntd-0000211-g002){ref-type="fig"}). Y indicates the allele coding for tyrosine at position 200 of β-tubulin that is associated with benzimidazole (BZ) resistance in nematodes of livestock, and F denotes the allele (coding for phenylalanine) indicative of BZ susceptibility. The solid-black curve represents the Hardy-Weinberg equilibrium (HWE). The null model generating microfilarial allele frequencies (see text) was used to investigate the range of sample microfilarial genotype distributions that could be obtained from a population exhibiting no excess inbreeding (i.e. assuming that the underlying adult parasite population would have values of ). Simulations mimic the same sampling scheme described in Schwab *et al*. The observed microfilarial genotype distribution falls outside the 95% confidence interval range (grey shaded area surrounding the HWE curve) generated by the null model, despite the uncertainty in the underlying *q^W^* estimates, indicating strong parasite inbreeding even before introduction of antifilarial combination therapy.](pntd.0000211.g003){#pntd-0000211-g003}
+
+Despite the large increase in microfilarial homozygosity attributable to parasite inbreeding, there is only a modest increase in the prevalence of hosts who have microfilariae that are homozygous for allele *Y* (and therefore putatively resistant if the allele confers drug resistance were recessive, [Figure 4](#pntd-0000211-g004){ref-type="fig"}). Parasite overdispersion reduces the number of hosts who are microfilaria-positive and concentrates allele *Y* into a small proportion of the host population. A high degree of parasite non-random mating and infrapopulation genetic differentiation increases the number of hosts (and the number of samples per host) that need to be sampled, in order to detect or quantify reliably parasite genetic diversity ([Figure 4](#pntd-0000211-g004){ref-type="fig"}). The model is used to investigate how parasite inbreeding may influence the sampling scheme of genetic surveys seeking to identify the presence of a known marker for drug resistance ([Figure 5](#pntd-0000211-g005){ref-type="fig"}). Results indicate that the observed level of parasite inbreeding markedly increases the minimum number of hosts, and the overall number of samples necessary to be 95% confident of detecting a rare allele. The sampling scheme used within [Figure 5](#pntd-0000211-g005){ref-type="fig"} assumes that the number of parasites genotyped per host is weighted by the host\'s microfilarial load. This improves the accuracy of allele frequency estimates by allowing heavily infected hosts to have a greater contribution to the sampled microfilarial population, something which is particularly important in overdispersed parasite populations.
+
+![The impact of inbreeding on the relationship between the mean proportion of hosts harbouring microfilariae with one or two copies of allele *Y* and the (assumed) underlying adult worm allele frequency, *q^W^.*\
+The figure compares the proportion of hosts exhibiting microfilariae with allele *Y* (i.e. both heterozygous and homozygous *YY* microfilariae, solid lines) with that of hosts which have only microfilariae with the homozygous *YY* genotype (broken lines). Model outcomes are compared for two hypothetical parasite populations; the former (thin grey lines) without excess inbreeding (generated by the null model), and the latter (thick black lines) with the levels of inbreeding (*F~IS~* = 0.28, ) observed in the Burkina Faso data. Simulations used the same sampling scheme described in Schwab *et al.* [@pntd.0000211-Schwab1] and assume an overall microfilarial prevalence of ∼25% (see text).](pntd.0000211.g004){#pntd-0000211-g004}
+
+![The impact of helminth inbreeding on the minimum number of microfilaria-positive hosts who should be sampled and the minimum number of microfilariae that should be genotyped to be 95% confident of detecting at least one rare allele.\
+A randomly mating population (, grey open squares) is compared to an inbred population (*F~IS~* = 0.28 and , black diamonds). The underlying adult worm allele frequency of both populations is set at *q^W^* = 0.05. Each data point represents 100,000 runs of the stochastic model generating microfilarial allele frequencies. The number of microfilariae analysed per host is proportional to host microfilaraemia.](pntd.0000211.g005){#pntd-0000211-g005}
+
+To date there is no phenotypic evidence that allele *Y* causes albendazole resistance in *W. bancrofti*. However, if an allele conferring drug resistance existed in populations of this parasite then the consequences on the spread of such an allele of parasite non-random mating and genetic differentiation between hosts will depend on the frequency and the relative dominance of the resistance allele. If the resistance allele were recessive, helminth inbreeding would greatly increase the probability that a parasite survives anthelmintic treatment. This is evident from [Figure 6](#pntd-0000211-g006){ref-type="fig"} which shows the influence of parasite inbreeding on the relative proportion of resistant genotypes for a given allele frequency. With a recessive resistance allele at a frequency of 0.05, the degree of inbreeding within the *W. bancrofti* population reported here, would on average increase the number of worms with the homozygote resistance genotype nine-fold. Conversely, if the resistance allele was dominant, inbreeding would reduce the probability that a parasite survives chemotherapy, as fewer worms would have the resistant allele (the deficiency of heterozygous parasites caused by parasite inbreeding will be greater than the increase in resistant homozygous worms).
+
+![The impact of the observed level of parasite inbreeding on the production of resistant microfilariae.\
+The graph gives the relative change in the number of resistant genotypes in an inbred parasite population compared to that in a population at HWE. Results are shown for different resistance allele frequencies. The graph assumes that a known resistance allele is either recessive (A), black lines, or dominant (B), grey lines. The inbreeding coefficients are those reported in [Figure 1](#pntd-0000211-g001){ref-type="fig"}: mean result (*F~IT~* = 0.44, solid line); upper 95% confidence limit (*F~IT~* = 0.68, dashed line); lower 95% confidence limit (*F~IT~* = 0.17, dotted line). The relative change in the number of resistant genotypes caused by parasite inbreeding is estimated as in (A) and in (B).](pntd.0000211.g006){#pntd-0000211-g006}
+
+10.1371/journal.pntd.0000211.t002
+
+###### The extension of Wright\'s *F*-statistic to represent the hierarchical population structure of obligate parasites of humans, exemplified in this paper with *Wuchereria bancrofti* (adapted from [@pntd.0000211-Hartl1] and [@pntd.0000211-Weir1]).
+
+![](pntd.0000211.t002){#pntd-0000211-t002-2}
+
+ Symbol Definition
+ --------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ *F~IT~* Correlation of alleles within individual worms relative to alleles drawn at random from the overall worm population (total deviation from the Hardy-Weinberg Equilibrium)
+ *F~IS~* Correlation of alleles within individual worms relative to alleles drawn at random from the parasite infrapopulation (within host non-random mating)
+ Correlation of parasite alleles within parasite infrapopulations relative to alleles drawn at random from parasites within the same village (parasite genetic differentiation between hosts within villages)
+ Correlation of parasite alleles within a village relative to alleles drawn at random from the overall worm population (parasite genetic differentiation between villages)
+
+The table includes a graphical representation of the different *F*-statistics.
+
+Discussion {#s4}
+==========
+
+The genotype distribution of *W. bancrofti* microfilariae varied dramatically from the HWE prior to the introduction of MDA. The degree of excess homozygosity reported falls outside the range of values generated by the null model described in this paper, indicating a significant degree of parasite non-random mating. This may be caused, in part, by parasite genetic differentiation between hosts. The null model generates a wide range of microfilarial allele frequencies and genotype distributions indicating that caution should be exercised when interpreting results obtained by sampling solely transmission stages. Significant changes in the genetic diversity of microfilarial populations over time may not reflect a significant change in the underlying adult worm population. This result highlights the crucial importance of developing sound theoretical null models that enable helminth population genetics data to be interpreted adequately [@pntd.0000211-Prugnolle2]. These models should take into account the uncertainty in outcomes, given the sampling scheme employed and the life-history traits of the parasite. A combination of sampling transmission stages and parasite inbreeding could cause estimates of the underlying adult worm allele frequency to be highly variable, increasing the number of samples that need to be genotyped in order to detect significant changes in the adult worm genome with time after introduction of chemotherapeutic pressure.
+
+Producing a null model to assess the range of adult worm allele frequencies that could give rise to the microfilarial genetic diversity observed in villages having received treatment is complex and beyond the scope of this paper. A dynamic, full transmission model would be required that takes into account the pharmacodynamic properties of the drugs in combination and separately, as the effects of chemotherapy will influence microfilarial genetic diversity for a number of years after chemotherapy. As a result it is not possible to conclude whether adult worm genetic diversity differs between the villages that have and have not received MDA, even though their microfilarial populations differ significantly in their genetic diversity.
+
+The results presented within this paper regarding the metapopulation dynamics of bancroftian filariasis stem from the analysis of a single nucleotide polymorphism in one gene. Further surveys, using multiple neutral polymorphic loci, are required to distinguish demographic and sampling effects from selective pressures [@pntd.0000211-Weir1]. If the allele of interest has been under selection then the observed genotype distribution could have been generated without the need for non-random parasite mating. The accuracy of the model developed here to derive microfilarial genetic diversity is limited by uncertainties regarding the biology of *W. bancrofti*. Results are dependent on our current ability to mimic adult worm burden and its distribution among hosts. Limitations inherent in the EPIFIL model, the presence of amicrofilaraemic yet circulating filarial antigen-positive infections, and possible heterogeneity in host immune responses could make adult worm burden estimates highly uncertain from microfilarial prevalence and intensity data. The relationship between the number of adult filariae and the rate of microfilarial production is likely to be complex and may depend on the immune responses elicited during the infection. The null model assumes a mean parasite intensity of 13.5 adult worms per host, though sensitivity analysis indicated that model results were relatively insensitive to small changes in parasite intensity around this value (sensitivity analysis ranged from 8.5 to 18.5 adult worms host^−1^, results not shown). Our conclusions are based on the adequacy of the null model, which may be improved by the inclusion of further biological detail. For example, recent evidence suggests a possible association between β-tubulin genotype in the related filarial parasite, *Onchocerca volvulus*, and female worm fertility [@pntd.0000211-Bourguinat1],[@pntd.0000211-Bourguinat2], suggesting a cost of resistance. Whilst the same gene has been analyzed in the current study, it is not known whether a similar relationship between genotype and fertility applies to *W. bancrofti*. If this were the case then the conclusions drawn regarding the causes of the observed genotype distribution should be treated with caution. Although no differences were seen in genotype frequency between the two pre-treatment villages studied, additional baseline surveys (prior to the start of MDA) would be required before firm conclusions regarding the true underlying frequency of allele *Y* in pre-treatment *W. bancrofti* populations can be drawn.
+
+Notwithstanding the fact that the *F*-statistic provides a phenomenological tool rather than a mechanistic measure of inbreeding (and therefore does not describe the biological processes generating excess homozygosity), we proceed to propose some likely causes for the strong degree of non-random mating identified in *W. bancrofti*, as well as the implications that this may have for the development and detection of anthelmintic resistance.
+
+Non-random infrapopulation mating {#s4a}
+---------------------------------
+
+Our results suggest that adult *W. bancrofti* worms do not mate randomly within the infrapopulation. This is in agreement with ultrasonography studies that show adult parasites congregating in 'worm nests' along lymphatic vessels, which remain stable over time [@pntd.0000211-Dreyer1]. Spatial heterogeneity within the host may produce multiple reproducing populations within each infrapopulation, which would increase host microfilarial homozygosity. Evidence of an apparent relationship between β-tubulin genotype, the same gene analyzed by Schwab *et al.* [@pntd.0000211-Schwab1], and female worm fertility in the related filaria *O. volvulus* has been reported by Bourguinat *et al.* [@pntd.0000211-Bourguinat2]. If such a relationship exists in *W. bancrofti*, the excess within-host homozygosity reported above may result from the increased fertility of homozygous adult worms. Anthelmintic treatment, prior to the introduction of MDA for lymphatic filariasis, may also have increased non-random mating depending on the selective advantage that allele *Y* may confer to the parasite at the time of treatment.
+
+Parasite genetic differentiation between hosts {#s4b}
+----------------------------------------------
+
+The degree of genetic differentiation in the parasite infrapopulation can shed insight into the microepidemiology of parasite transmission [@pntd.0000211-Anderson1]--[@pntd.0000211-Thron1]. The metapopulation transmission dynamics of *W. bancrofti* will depend on the transmission efficiency and biting behaviour of the mosquito vector. *Anopheles gambiae sensu stricto* and *An. funestus* are thought to be the main vectors of *W. bancrofti* in Burkina Faso [@pntd.0000211-Gyapong1]. Hosts can acquire multiple L3 larvae during the same bite. Although density-dependent processes are known to operate on the uptake and development of *W. bancrofti* in *An. gambiae*, infective vectors will regularly transmit multiple related L3 larvae simultaneously [@pntd.0000211-Snow1]. Other mosquito vectors of *W. bancrofti* have even greater vector competence. For example, up to 32 L3 larvae were recovered from an experimental host after it was bitten by a single *Culex quinquefasciatus* [@pntd.0000211-Gasarasi1], a main vector in East Africa. Mark-recapture studies and bloodmeal analysis indicate that various mosquito species appear to have high site fidelity, regularly biting multiple members of the same household [@pntd.0000211-McCall1],[@pntd.0000211-Michael1]. These aspects of *W. bancrofti* transmission increase the likelihood that a host will be infected with closely related parasites and will contribute to the observed genetic differentiation.
+
+More generally, drug treatment may increase infrapopulation genetic heterogeneity, as those parasites within treated hosts which survive treatment may have a higher resistance allele frequency than those harboured within untreated hosts. In Burkina Faso, lymphatic filariasis is treated with albendazole and ivermectin. Evidence indicates that the albendazole plus ivermectin combination has some macrofilaricidal and reproductive effects (mainly associated with albendazole [@pntd.0000211-Tisch1]), as well as the microfilaricidal effect (mainly associated with ivermectin). It is possible that a degree of the genetic differentiation between hosts observed in the untreated villages may have resulted from individual members of the community seeking, for instance, treatment for geohelminth infection prior to the introduction of GPELF.
+
+The spread of anthelmintic resistance {#s4c}
+-------------------------------------
+
+Population subdivision and non-random mating will influence the outcomes of selection under chemotherapeutic pressure in different ways, depending on the initial frequency of the allele under selection and the ecology of the infection. Before the rate of spread of drug resistant parasites can be predicted reliably and accurately, greater knowledge would be required regarding the number, linkage, dominance, and possible negative pleiotropic effects of putative resistance allele(s), as well as regarding the pharmacodynamic properties of the drugs administered singly and in combination. However, useful biological insights can be obtained from mathematical models that make reasonable assumptions concerning the above [@pntd.0000211-Schwab2],[@pntd.0000211-Schwab3].
+
+If the resistance allele is recessive and it has a low initial frequency, inbreeding will increase parasite homozygosity and as a result, the spread of drug resistant worms across the parasite population (see [Figure 6](#pntd-0000211-g006){ref-type="fig"} and [@pntd.0000211-Schwab2]). If drug resistance is a semi-dominant trait then parasite inbreeding will either increase or decrease the spread of drug resistance, depending on the efficacy of the drug against heterozygote parasites. Parasite genetic differentiation between hosts will also increase the spread of resistance even when the resistance allele is initially present at a very low frequency, as it increases the probability that male and female resistant worms will inhabit the same infrapopulation. This work is consistent with mathematical models of veterinary helminths which indicate that spatial heterogeneity and aggregated infections between hosts increase the spread of rare recessive genes [@pntd.0000211-Cornell1],[@pntd.0000211-Smith1].
+
+The detection of anthelmintic resistance {#s4d}
+----------------------------------------
+
+The operation of a strong degree of parasite genetic differentiation between hosts reduces the prevalence of infection with drug resistant parasites and would therefore increase the number of hosts and parasites that should be sampled to detect and quantify the frequency of resistance-conferring alleles reliably. Even at high resistance allele frequencies, some hosts will have no phenotypic signs of resistance, particularly if the resistance allele is recessive, and therefore hosts respond to treatment. In practice the number of parasites that can be genotyped will be restricted, so surveys should carefully consider the sampling scheme they employ in order to maximise the accuracy of allele frequency estimates. Repeatedly sampling from the same host increases the chance of detecting a resistance mutation if it is present in that infrapopulation. However, sampling transmission stages from as many hosts as possible should be considered the optimum strategy, even in a population with low parasite genetic differentiation between hosts, as it reduces the chance of repeatedly sampling offspring of the same adult worm. Prior to the introduction of chemotherapy, studies investigating the presence and frequency of putative resistance markers through genotyping transmission stages alone should weight the number of samples they take per host by the host\'s infection intensity. However, after the start of chemotherapy the best sampling scheme will depend on the pharmacodynamics of the drug and the nature of the questions under investigation.
+
+Parasite elimination {#s4e}
+--------------------
+
+For human helminth infections, the importance of parasite genetic differentiation between hosts stretches beyond population genetics and will influence the outcomes of parasite elimination campaigns such as the GPELF. The ability of a parasite species to persist in a host population following prolonged MDA will depend in part on the metapopulation dynamics of helminth transmission, the patterns of host compliance with treatment regimes and the pharmacodynamic properties of the drugs used. The aggregated nature of the passage of transmission stages between hosts will make parasite elimination harder to achieve by lowering the breakpoint density (the unstable equilibrium below which the parasite population will tend naturally to local extinction [@pntd.0000211-Macdonald1]), as overdispersion of parasites will result in fewer hosts with a single-sexed infection.
+
+The authors have declared that no competing interests exist.
+
+TSC and M-GB would like to thank the Medical Research Council, United Kingdom, for financial support. AES and RKP thank GlaxoSmithKline, FQRNT, and the Centre for Host Parasite Interactions, Québec, for financial support. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.
+
+[^1]: Analyzed the data: TC. Contributed reagents/materials/analysis tools: AS RP. Wrote the paper: TC MB.
+
+
+
+
+
+
+
+
+
+Natural killer cell cytotoxicity and alpha-interferon in early rheumatoid arthritis.
+Natural killer (NK) cell number, cytotoxicity, and serum alpha-interferon (alpha-IFN) was measured in a group of early synovitis patients and compared to that of established rheumatoid arthritis patients and normal controls. No significant differences in NK cell number or serum alpha-IFN were found. NK cell cytotoxicity (NKCC) in the early synovitis group was significantly (p < 0.05) reduced compared to that of the normal controls and not significantly different from the established rheumatoid controls. There was a trend for those early synovitis patients with a good outcome to have higher NKCC. Low NKCC is evident very early in the course of rheumatoid arthritis and is thus unlikely to be secondary to chronic inflammation. There is no relationship between NKCC and alpha-IFN levels and the cause of the reduced NKCC is unknown. Alpha-IFN levels are not raised early in the course of RA.
+France Clear Favorite on 2022 World Cup Odds
+
+The 2018 FIFA World Cup came to a conclusion on Sunday as France posted a 4-2 victory over Croatia to claim their second World Cup title in 20 years and pay out on +700 pre-tournament World Cup championship odds.
+
+Sunday’s victory as +110 favorites on the World Cup game line odds continues France’s torrid play at recent international tournaments. Les Bleus came within an extra time goal of the Euro 2016 championship, falling to Portugal by a 1-0 score in their only defeat at a major international tournament since the quarter-finals of the 2014 World Cup.
+
+With a youthful lineup led by 19-year-old Kylian Mbappe, who garnered Best Young Player Award honors at this year’s tournament, France’s future looks bright. Fresh off the heels of their victory this weekend, Les Bleus opened as clear +500 favorites to successfully defend their title on the 2022 World Cup odds.
+
+While Sunday’s loss as +300 underdogs proved to be a massive disappointment for Croatia, the Blazers’ impressive drive to their first-ever berth in a World Cup final has earned them hard-fought status as one of the world’s elite squads. However, Croatia’s heroics at Russia 2018 have done little to boost them on the early 2022 World Cup betting lines, where they lag well behind the favorites as a +5000 wager.
+
+A trio of squads coming off disappointing performances at this year’s tournament closely follow Les Bleus on the 2022 World Cup championship odds, with Brazil pegged at +700, ahead of Spain at +750, while 2014 title holders Germany sit at +800.
+
+The Canarinho traveled to Russia as +400 pre-tournament favorites on the 2018 World Cup odds, and looked poised for a deep knockout stage run after closing out the group stage with a pair of clean-sheet wins. However, Brazil was unable to solve a high-powered Belgium squad in a 2-1 loss that marked their third quarter-final exit in their past four tournament appearances.
+
+Spain made a second straight early exit at this year’s tournament, falling to Russia on penalties in a Round of 16 match, which marks their only knockout stage appearance since raising the hardware at the 2010 World Cup.
+
+Russia 2018 also proved to be a bitter disappointment for Germany, who closely followed Brazil at +475 on the World Cup futures entering the tournament. However, a shocking 1-0 group stage loss to Mexico as heavy -210 favorites set the tone for Die Mannschaft’s shortest run at a World Cup since 1938.
+
+Belgium Trails on 2022 World Cup Betting Lines
+
+Further down the 2022 World Cup odds, Belgium sits at +1100, followed by Argentina at +1200, and Italy at +1800, while England joins the Netherlands at +2000.
+
+Les Diables Rouges led all squads with 16 goals at Russia 2018, and saw a 25-match unbeaten streak come to an end with a 1-0 loss to France in the semi-finals. Argentina posted just one win in four matches at this year’s tournament, and maintains strong odds despite the uncertain future of superstar Lionel Messi, while Italy and the Netherlands face daunting rebuilding tasks after both European powerhouses failed to qualify for this year’s tournament.
+
+Conversely, England sports a youthful roster, led by top goalscorer Harry Kane, which is likely to make the Three Lions a serious contender at Qatar 2022.
+
+n**(-9/22)
+Simplify ((q/(q*q**11/q*q))/(q**0*q))**(-12) assuming q is positive.
+q**144
+Simplify (s/s**22)/s*s**(-2/11)*s*s assuming s is positive.
+s**(-222/11)
+Simplify (y/(y*(y/(y/(y/(y*y*y**(3/5)))))/y*y))**(-7) assuming y is positive.
+y**(-56/5)
+Simplify o**(-6)*o**13 assuming o is positive.
+o**7
+Simplify q**(-23)*q*q*q**5 assuming q is positive.
+q**(-16)
+Simplify (t/t**(3/10))/(t**(-1)/t)*t*t**(2/3)*t**(-2/17)*t assuming t is positive.
+t**(2677/510)
+Simplify j/j**1*j**(2/15)*(j**(-4)/j)/j*j/(j/(j**(7/5)/j)) assuming j is positive.
+j**(-82/15)
+Simplify d**(-2/13)*d**(-4)*d/(d/(d/d**(-4/5)))*d**(1/5) assuming d is positive.
+d**(-28/13)
+Simplify (((z*z/((z/z**6)/z))/z)/z**(4/3))**(-41) assuming z is positive.
+z**(-697/3)
+Simplify (r**(-1)/r)**(-5/4) assuming r is positive.
+r**(5/2)
+Simplify (j**2/j)**(-33)/(j**(-1/5))**(1/21) assuming j is positive.
+j**(-3464/105)
+Simplify f**(-6)/f*f**(3/2)*(f**1/f)/f**(-5/2) assuming f is positive.
+f**(-3)
+Simplify (v**(2/7)/v)/(v*v**(-2/7)*v)*v**4*(v/(v*v/(v**(-8)*v)))/v assuming v is positive.
+v**(-52/7)
+Simplify ((c/(c*c*c/((c*c**19)/c*c)*c)*c*c)/c)/(((c**(8/9)/c)/c)/c*c) assuming c is positive.
+c**(172/9)
+Simplify (k**(1/3))**(6/17)/(k*k*k/(k*k*k**(2/11)/k*k)*(k*k*k**(3/4))/k) assuming k is positive.
+k**(-1833/748)
+Simplify (q**4*q**(2/11))/((q/q**(1/7))/((q/(q*q**(1/17)*q))/q)) assuming q is positive.
+q**(1657/1309)
+Simplify ((c*c/(c**(3/5)*c))**(-15))**(-15/7) assuming c is positive.
+c**(90/7)
+Simplify (m*m/((m*m**(-3)/m*m)/m))/((m/(m**(1/7)/m)*m)/m)*m*m**9*m/(m/(m*m**(-9))*m)*m assuming m is positive.
+m**(36/7)
+Simplify (v*v/(v/(v*v/(v*v*v**(-2/7)))))**(-13)*(v*v/v**(2/3))**(2/15) assuming v is positive.
+v**(-5209/315)
+Simplify (((o/(o/(o**(1/3)*o*o)))/o*o)**(-1/8))**22 assuming o is positive.
+o**(-77/12)
+Simplify (j*(j**(-5)*j)/j)/j*((j/((j*j**(-1)/j*j*j)/j))/j)/j*((j**(-6)*j*j)/j)/(j*j**(-6)) assuming j is positive.
+j**(-6)
+Simplify w*(w*((w/(w/((w/(w*w/(w*w/w**15)*w*w*w*w*w*w))/w)*w*w))/w*w*w*w)/w)/w*w/w**(1/15) assuming w is positive.
+w**(-301/15)
+Simplify ((i**7/i)/i*i/i**(-5))**40 assuming i is positive.
+i**440
+Simplify (r**0)**33 assuming r is positive.
+1
+Simplify (b**(-17)*b*b**(-10/7))**(5/8) assuming b is positive.
+b**(-305/28)
+Simplify (a**(-2/3)*a)/a**3*(a/(a*a*a**(2/3))*a)/a*a*a/a**(-2/9) assuming a is positive.
+a**(-19/9)
+Simplify (x/x**(-3/2))**48 assuming x is positive.
+x**120
+Simplify ((o*o**(-33/4)*o)/o)/(o**(-48)/o*o) assuming o is positive.
+o**(163/4)
+Simplify (t**(2/9)/(t/(t*(t*t/(t**(-4/5)*t))/t)))**(2/61) assuming t is positive.
+t**(92/2745)
+Simplify x**(1/2)/(x**(-4)/x)*(x/x**(-1))**(-50) assuming x is positive.
+x**(-189/2)
+Simplify l**(-2/31)*l**(-13)/l assuming l is positive.
+l**(-436/31)
+Simplify x**(-2/13)*x**(-20) assuming x is positive.
+x**(-262/13)
+Simplify (h**(28/5))**(-15) assuming h is positive.
+h**(-84)
+Simplify ((w*w*(w*w**(-5/4))/w)/(w*w*w/(w*w/w**(1/13))*w))**(3/17) assuming w is positive.
+w**(-207/884)
+Simplify (x**(2/7))**(1/44) assuming x is positive.
+x**(1/154)
+Simplify a**(-25)*a*a**(3/31) assuming a is positive.
+a**(-741/31)
+Simplify m**(1/3)/m**6*m**3/(m*m*m*m**(-5)/m) assuming m is positive.
+m**(1/3)
+Simplify (((h*h/(h**14*h))/h)/h)/h*h**4 assuming h is positive.
+h**(-12)
+Simplify (x**(-2)*x)**(-1/17)/((((x**(1/3)/x)/x)/x)/x*x*x*x/x**11*x) assuming x is positive.
+x**(547/51)
+Simplify (h**(-2/7)*h/(h/(h*h/(h*h*h**(2/9))*h)))/((h*(h*h/h**6)/h)/h*h**2) assuming h is positive.
+h**(220/63)
+Simplify m**9/m*m/m**(3/20) assuming m is positive.
+m**(177/20)
+Simplify ((q**(-8)*q)/q)**(2/15) assuming q is positive.
+q**(-16/15)
+Simplify (x**(4/9)/x**(2/29))**(2/15) assuming x is positive.
+x**(196/3915)
+Simplify (f**(-1/6))**3/((f/(f**10/f*f))/(f**(4/11)/f)) assuming f is positive.
+f**(173/22)
+Simplify (i*i**(1/2)/i*i)/i*i**(2/11)*i**(1/3)*i**(-6)/i assuming i is positive.
+i**(-395/66)
+Simplify (j/(j*j**(-4))*j**(2/5))/(j**(-4)*j**(1/2)) assuming j is positive.
+j**(79/10)
+Simplify (j/(j*(j/j**(2/13))/j*j))/j**(1/2)*j**(-2/7)*j**1 assuming j is positive.
+j**(-115/182)
+Simplify (k**(-6/5)*k*k*k*k*k*k*k**(2/9)/k*k)**(-3/8) assuming k is positive.
+k**(-113/60)
+Simplify ((h*h**(-3/2)*h)/(h*h/h**(-6)))/(h**(-2/3)/h*h/(h**(-5/4)*h)) assuming h is positive.
+h**(-85/12)
+Simplify y*y*y**(-3/2)*y/y**10*y**(2/7)/y**(-8) assuming y is positive.
+y**(-3/14)
+Simplify (s**(-1/6)/(s/s**(-3/5)))/((s*s**(1/3))/(s/(s**(-3)*s*s))) assuming s is positive.
+s**(-11/10)
+Simplify t/(t/(t*t**(-15/2)))*t/(t**9/t) assuming t is positive.
+t**(-27/2)
+Simplify s*s*s/s**(-8)*s*s/s**(-11)*s assuming s is positive.
+s**25
+Simplify (c*c**(-3))**(7/2)*(c**(2/9))**(1/17) assuming c is positive.
+c**(-1069/153)
+Simplify d**(3/8)*d*d*d**(-2/5) assuming d is positive.
+d**(79/40)
+Simplify (h/h**(-1/11))/h*h*h**(-3/4)*(h**(-2)/h)/(h*h*h**0) assuming h is positive.
+h**(-205/44)
+Simplify (u*u**(8/7)*u)/(u*((u*u**(-3/4))/u)/u*u*u)*(u*u**(-4))/(u/(u*u/(u**(-2/11)/u*u))) assuming u is positive.
+u**(23/308)
+Simplify ((o**(-4/7)*o)/o**0)/((o*o**(-6/11))/(o*o/o**(1/5)*o)) assuming o is positive.
+o**(1068/385)
+Simplify ((c/(c*(c/(c**4*c)*c)/c*c))/(c/c**(-4)))/((c*c**2*c)/(c/c**(-4/5))) assuming c is positive.
+c**(-21/5)
+Simplify a**7*a*((a**(17/4)*a*a)/a*a)/a*a assuming a is positive.
+a**(57/4)
+Simplify ((n*n**5*n*n*n)/n*((n/n**(2/5))/n*n)/n)**(-1/11) assuming n is positive.
+n**(-38/55)
+Simplify (s/(s/s**(3/5)))**3 assuming s is positive.
+s**(9/5)
+Simplify (v*v**(-1/16))/((v**1/v)/v) assuming v is positive.
+v**(31/16)
+Simplify ((d**0)**16)**26 assuming d is positive.
+1
+Simplify i**(-9)*i**(-17) assuming i is positive.
+i**(-26)
+Simplify (((k*k*(k*k**6)/k)/k)/(k**(-3/4)/k))/(k/(k*k**2*k))**(16/3) assuming k is positive.
+k**(99/4)
+Simplify (p**(-4)*p/(p*p**(-4)))**(1/23) assuming p is positive.
+1
+Simplify l**(5/6)/l*l*l**(-7/2) assuming l is positive.
+l**(-8/3)
+Simplify t/(t**15/t)*(t/(t/(t**(2/3)*t)))/t assuming t is positive.
+t**(-37/3)
+Simplify ((b*b**14*b)/b**12)**11 assuming b is positive.
+b**44
+Simplify ((g*g**(2/13))/g)/g**(-6) assuming g is positive.
+g**(80/13)
+Simplify (v/v**(10/7))**(2/87) assuming v is positive.
+v**(-2/203)
+Simplify (t/(t*t**(-4/5)))**(-50) assuming t is positive.
+t**(-40)
+Simplify g**(-2/7)*g**(-2)*(g*g/(g/g**(-1)*g))**(-2/101) assuming g is positive.
+g**(-1602/707)
+Simplify ((v*v**(-1/4))/(v/(v*v/(v**(-1/2)/v)*v)))/(v**(2/7)/v)**(5/7) assuming v is positive.
+v**(933/196)
+Simplify (b**(-3/5)*((b/(b/(b*b**(-1))))/b*b)/b)/(b**(1/3)*b**10/b) assuming b is positive.
+b**(-164/15)
+Simplify (h**(1/14)*h**(-4)*h)**(1/39) assuming h is positive.
+h**(-41/546)
+Simplify (y**(-1))**(-1/18)*(y*y/(y/(y**(-2/5)*y))*y)**(-45) assuming y is positive.
+y**(-2105/18)
+Simplify (z**(-2/11)/z*z)**(-3/23) assuming z is positive.
+z**(6/253)
+Simplify (k*k**(-1))**14*k**(-1)*k**5/k assuming k is positive.
+k**3
+Simplify ((m*m**(-2/7)*m)/m**(-4))/(m*m*m**(-4)/m*m*m*m/m**5*m) assuming m is positive.
+m**(68/7)
+Simplify ((j*j**(-2))/j)**(-2/61)/((j*j/j**1)/j*j)**(-35) assuming j is positive.
+j**(2139/61)
+Simplify (u**(-1/12)*u)**17 assuming u is positive.
+u**(187/12)
+Simplify ((z**(-2/17)*z*z)**(7/3))**(2/5) assuming z is positive.
+z**(448/255)
+Simplify i**(-1/15)*i**10*i assuming i is positive.
+i**(164/15)
+Simplify (w**3/((w/w**(5/3))/w*w))**(-2/109) assuming w is positive.
+w**(-22/327)
+Simplify z**(2/17)/z*z**(7/4) assuming z is positive.
+z**(59/68)
+Simplify ((s*s/(s/(s**(-6/5)/s)*s))/s)/s**(4/5) assuming s is positive.
+s**(-4)
+Simplify i**24*i*i/i**(-6)*i assuming i is positive.
+i**33
+Simplify ((v*v*v/(v*(v*v*v**(-1/9)*v)/v))/(v/v**6*v*v))/(v**(-1/5)/v**3) assuming v is positive.
+v**(284/45)
+Simplify (n/(n*n/(n/(((n*n**(-4))/n)/n)*n))*n**(-2/9))/(n*n*n**4*n*n**(-1/3)) assuming n is positive.
+n**(-8/9)
+Simplify ((l/l**(-1/11))/l)/l**(-24) assuming l is positive.
+l**(265/11)
+Simplify l**3*(l*l**(-8)*l)/l assuming l is positive.
+l**(-4)
+Simplify ((k/k**(-3/2))/k**(12/7))**(2/29) assuming k is positive.
+k**(11/203)
+Simplify (((t*t*t*t*t*t/t**(-1/12))/t)/(t*t**(-2/3)))**28 assuming t is positive.
+t**133
+Simplify (g/(g**(2/23)/g))/(g*g*((g*g*g**(11/4))/g*g)/g*g) assuming g is positive.
+g**(-445/92)
+Simplify (o**(-2)/(o/(o/((o/(o**(-13)*o*o))/o*o))))**(4/7) assuming o is positive.
+o**(-8)
+Simplify a**(5/7)*a/a**(8/9) assuming
+5 Surprisingly Easy Tricks to Make Running a Habit
+
+You were really excited…
+
+You had signed up for a 6k run in your neighbourhood. You had also joined the local running club.
+
+You were really motivated, weren’t you?
+Your willpower was on a sprint and you were geared up to bolt towards the finishing line.
+
+But then…
+
+You went for a vacation or a work trip for a week.
+What happened when you got back?
+
+Do you still have that initial momentum?
+Do you feel like giving up, because starting over is such a pain?
+Is it tough to find time?
+
+Sticking to a new habit isn’t easy.
+
+I know! I had tried to make running a habit for ages and failed miserably.
+
+Eventually I got tired of failing.
+That’s when I began to read about the science of habit formation. I tried to find smart and simple ways to make habits stick.
+
+Today I can lace up my shoes and go for a regular jog every 4-5 days a week and with ease.
+
+Check out these 5 surprisingly easy tricks that have helped me make running a habit:
+
+1. Create a trigger
+
+According to Charles Duhigg, the bestselling author of “The Power of Habit”, Triggers act as conscious or subconscious reminders to perform a behaviour.
+
+Triggers could be visual reminders. Try keeping your running gear and shoes next to your bed so you see them first thing in the morning.
+
+Triggers can also be action based. I run in the evenings and my trigger is “right after I drink my evening coffee, I will go running”.
+
+2. Be specific
+
+During the first 4-6 weeks of picking up running as a habit specify a time of day (or night), the exact trail you will go for the run, duration of the run and at what time will you leave for the run.
+
+The more specific you can make the action, the easier it is to implement it everyday.
+
+You can use this statement: “I will go running every Monday, Tuesday, Thursday and Friday at my neighbourhood park in the evening at XX pm (write the time here) for 30 minutes”.
+
+3. Start small
+
+Habit coach Rob Norback strongly advocates the half-and-half rule. If you want to run for 20 minutes every day, cut it into half (10 minutes) then half it again (5 minutes). That’s where you should start.
+
+Doesn’t that sound a lot more achievable?
+Even if you can run for 10-15 minutes, stick to a 5 minute routine until it becomes second nature. Only once it’s become a habit should you start running for longer periods.
+
+How does this help?
+
+You complete your goal in 5 minutes and that brings a sense of accomplishment which is essential to building habits.
+
+You overcome any procrastination or hurdles (you woke up late, have to rush to office, send the kids to school) that you may face, since you have to invest only 5 minutes.
+
+4. Forgive yourself
+
+If you miss a day (which you inevitably will) do NOT berate yourself.
+
+Missing a day is no big deal. But assuming defeat because you missed 1 day or 2 days in a row (or a whole week while vacationing), is a huge mistake.
+
+Negative thinking will make you give up. If you think you have failed or you are lazy or you are not good at running, it will stop you from taking further action.
+
+5. Get a good night’s sleep
+
+Sleep matters! If you are not getting at least 6.5 hours of shut eye every night you will be tired, with little energy to focus on habit changes.
+
+You might make it to the park when your enthusiasm and motivation for running is high, but the moment things get even slightly difficult, you’ll skip the habit because as a sleep-deprived person you wouldn’t have the willpower to push yourself through a little discomfort.
+
+Why 6.5 and not 7 hours?
+Because, Tony Schwartz, Energy Coach, recommends that half an hour of exercise can actually compensate for half an hour of sleep and give you more energy in the bargain!
+
+What habit do you want to pick up?
+
+Work out at home, follow a diet, wake up early, learn music, maybe a language, study for a certification?
+
+These principles work for any kind of habit formation. Try it!
+
+Want to know about that one core ingredient for forming any habit? Sign up for our Blog.
+Thursday, May 14, 2009
+
+Again between two guys a hell of a lot smarter than you. Me and James.
+
+Just a reminder Channelup is in Italics, James in regular font.
+
+Yo buddy
+
+Last night's lost was nothing if not interesting. I liked it (thought it could have been an hour and a half) and thought it did a pretty good job setting up next season. Writing about it was insanely hard as I had a lot of trouble gathering my thoughts and putting them in a coherent format. I obviously wanted to avoid just straight summarizing, but there was so much going on. Anyway I thought I would add a couple of more thoughts that didn't make it into my post.
+
+- I kind of mention this but the good/evil thing is really going to be the main focus of the last season I think. Ben and Mystery Island guy leading the charge to keep the island secret from everyone with others (Richard Alpert maybe? Shadow of the statue group?) fighting for their own end games. That storyline has the potential to be awesome and maddening at the same time.
+
+- The bomb explosion will probably make it so that the Oceanic crew (plus Miles and Juliette) can somehow jump back to the present and back into the fray. One thing I liked about this season with them alternating between different points in time, is that there wasnt too much overlap and confusion with the characters. Basically keeping it so that everyone easnt always running into each other worked for the production of the show. Putting them all back in to the same time, with Alpert and company's increasing role, plus this new faction, could be tough.
+
+Any other thoughts? I think I have now written 10,000 words on Lost.
+
+Interesting idea about the bomb sending the main characters forward in time. Supporting that idea is the fact that they used the exact same screen effect when we are meant to believe the bomb goes off as when we have traveled in time previously.
+
+So this foil to Jacob doesn't actually resurrect Locke - but turns himself into an image of Locke? So are we meant to believe this guy also turned himself into a vision of Jack's Dad, Walt, etc? Even though it's bizarre, I suppose it's at least a consistent explanation.
+
+I am not sure if I like the idea of the island being this place where two gods are battling for supremacy. I also don't get why Jacob would just let Ben wave that knife around and then kill him(if he is indeed dead) considering he earlier exercised the power to bring a human being back to life when Locke was thrown from the window. And to be honest, I also thought the "Jacob was actually there at all of these huge moments in all of the Losties lives" got extremely old after the first couple. The first one I was like WHOA!!! and then after that it sort of felt like cheap thrills. Jacob sitting on a bench...Locke falls from the window! Can you believe it?! Jacob was there when Locke was thrown out of the window, too! So I guess what I am saying is, I agree that the episode stands up a lot better as an hour and a half instead of 2 hours. This is sort of a shame considering I felt like some of the other huge plot points were sort of rushed.
+
+We need to see Jacob at Sun and Jin's wedding, but all we get for the most pivotal turning point is the episode is Juliet saying "I changed my mind. I saw the way you looked at her," and a weak explanation? Juliet similarly instantly changes her mind in the sub to get them back to the island...I guess she didn't see any suspicious looks by Sawyer in any of the other dozens of times he and Kate interracted since she got back? I just thought this was a very hurried and sloppy way to make sure everyone got back on the island while also letting Jack's plan carry on. It felt like forced drama, which LOST has done a good job avoiding this season. Easier would have just been to not place Sawyer, Juliet, and Kate on the sub...avoid some empty action scenes of their escape, Sawyer and Jack's fight, the "Why'd you stop," "That's why dude," Hurley and Jack moment, and so on.
+
+Why couldn't Juliet have given her "i saw the way you looked at her" speech when Sawyer first suggests going on the sub in the first place? We are still in the same place, but we have room for further development elsewhere. Would it have been so bad if we saw MIles saying to his father, "Now I understand why you did it," and then playing a bigger role in all of this instead of just having this awesome character making snarky comments in the background from time to time? Perhaps another interraction between Jacob and Evil Jacob at some other point in time(like when Oceanic 815 crashes). My overall point is, as I am sure you can tell by now - a few storylines left me wanting more and a few left me wanting decidedly less. I think either trimming it down, or re-organizing it while dropping the fluff would have been a far more impactful finale. I do agree though, that the events that happened set us up well for next season.
+
+Totally agree about the Jacob appearances. I thought some were cool (Sawyer, Sayid, Locke) and some were stupid (Jin and Sun, Jack). Also they kind of throw you off with Juliet's parents getting divorced and Jacob not showing up. When he doesnt show it kind of makes the whole thing some weird set up for why she leaves Sawyer. To be honest, the whole Sawyer, Kate Juilet thing has annoyed me for a while and I find it very hollow. What I did enjoy about Sawyer though was the genuine anguish (not for losing Juliet), but for losing the life he had in the Dharma Initiative. He was kind of saying, "I finally made a normal life for myself and you (Jack) came along and f-ed it up like you always do." That is where I felt most pity for him as a character.
+
+Also the scene where they are about to explode the bomb was beyond ridiculous considering an alarm is going off, the Dharma initiative is on to them, Sayid is dying and every sits around to talk about their feelings for ten minutes. No possible way.
+
+Agree totally about the sub and its uselessness in the overall plot. Just a filler. I doubt Jacob is actually dead and we need to consider that his body is most likely just some kind of vessel to a more supreme being. I don't know if I love these God implications because they complicate things almost more than time travel does. People with God-like powers (Sylar) are just as impossible as those who try and change the future or past.
+The true test of character is not how much we know how to do, but how we behave when we don't know what to do.
+
+Friday, August 28, 2009
+
+Free from blackness
+
+Independence day celebration is just around the corner. It’s been 52 years our beloved country celebrated independence and our country had achieve a lot since then. This time around since the independence fall on Ramadhan time so I bet there will be not many concerts or socialize party organized in KL or anywhere else but then, it’s just my predictions, other races might as well did it.Talking about independence, what has we, as the children of the post independence know about the value of freedom? Freedom means free from any colonization if that what it means from the past but nowadays out culture are so much been conquered by other races, culture. Our country fills with “PATI”. Anywhere we walk we can see many faces and sometimes I wonder, am I the foreigner here?Yeah2 I know the globalization means that you have to accept the windows of the world into your world but then if the newcomers come and made a hell out my country so what it is going to be? It’s ok for them to work here and made a decent earning with living peacefully with the locals but the main problem is the one that cause the social problem. What we saw in newspaper and news are just the tips of the reports and I’m pretty sure there are many more cases of robbery, thief, snatch, rape, murder involving these ‘type’ of people. Mastika (August Edition) had some stories of how the Negro affecting our life here in Malaysia. Sometimes I wonder, how can they come here? With so many of them? And the usual stories that link with Negro are theft, “pukau”, money counterfeit, rape (which was at first called love).i like to gather some info from all of you about the last one. We see and find this thing in KL right? We can see a nice lovely Malay girls walking along MidValley, hold hand with some Black tall guy. I still wonder why on earth that these ladies picked and fall in love with the Negro? I means they are Christian (some might be Muslim), Black( if you want to choose black, it’s better to choose the Indian) and not handsome ( Malays are so hotter than them)? Why and How? And if their love story end with happy ending good for them but the problem is the ending just like in the 999 (tv3 program).The Negro slept with the girl and then he dumped her and to make matter worse, the girl pregnant and the child with the DNA of Negro was born. So who’s to blame here? The Negro of course, but the girls too.What makes Negro or (in the whole) the foreigners better than the locals? I can stand Malays girls couple with Indians or Chinese as long as same Religion (I mean Islam of course), but I can’t stand if Malays or Chinese or Indians couple with foreigner. It’s like the man from our country had extinct that force them to find foreigner. The same usual lame reasons for these girls to find Negro or “Mat Salleh” are romantic, caring, loving and obviously richer. I would say it is bullshit. The story had been always having the same ending.This is also one type of colonization and proofs that we, Malaysians still not fully achieve Independence. We always value the outside goods higher than our own local goods without ever considering the quality first.The value of Independence means nothing if just some people say aloud “Merdeka” each year and put on the flag on the car, house or office. The values of independence should come within the heart of every Malaysian and together we care and cherish this gift for the good of the future.Happy Independence Day!p/s – My car might not have the flag of Malaysian but in my heart, the love of this country, none can compared with. Well, I shall put on the flag afterwards. Hope all of you did the same things. The first is Islam and the second is Malaysia and I do mean “Malay-sia”.
+.versionSelectItem {
+ display: grid;
+ grid-template-columns: 70px auto 130px;
+
+ .changeLog {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ padding-right: 10px;
+ }
+}
+
+class SwiftMethod < SwiftEntityElement
+end
+
+Co-Op program helps wounded warriors transition
+
+Story Highlights
+
+Former Staff Sgt. Anthony Moralez was placed in a civilian position at White Sands Missile Range thanks to the Wounded Warrior Co-Op Program.
+
+Former Staff Sgt. Anthony Moralez was placed in a civilian position at White Sands Missile Range thanks to the Wounded Warrior Co-Op Program.
+
+WHITE SANDS MISSILE RANGE, N.M., Nov. 5, 2009 - White Sands Missile Range has initiated a Wounded Warrior Co-Op Program to help expedite recruitment efforts while at the same time helping Soldiers transition to civilian life.
+
+Former Staff Sgt. Anthony Moralez was assigned by the battalion to work with CPAC to help develop the program. He was subsequently placed in a civilian position.
+
+"This program is something I'm very passionate about," Moralez said. He explained that not too long ago he was sitting in the WTU wondering what life had in store for him. "Quite honestly I was worried!" he said.
+
+Then last year he met the EEO and CPAC office staff and he said they were extremely passionate about helping the Soldiers "Give back". When he was approached to help with the startup of the program Moralez said he jumped at the opportunity. While developing the concept plan, Moralez said he realized that the program will only work if the individual wants it to work and is willing to give up a few things to gain others.
+
+"I feel good about the program for two reasons, I helped develop it and it worked for me," Moralez said. "I'm telling you, if you walk through this door many others will open. The trick is to get thru that first one!"
+
+Soldiers eligible for this program are those in the battalion who are transitioning out of the Army. Those Soldiers who apply for the program, with an endorsement from the Warrior Transition Battalion commander, can be placed in a federal civilian position at White Sands Missile Range for up to 90 days, pending release from active duty.
+
+Upon successful completion of the trial period and upon honorable release from the military, if approved by the appropriate civilian selecting official, the eligible Soldier may be appointed to the civilian position.
+
+"Tony has been an outstanding addition to DPTMS. If you're looking for adaptive, resourceful self-starters with good operational sense, look to the Wounded Warrior Program. I just found out I have two more openings and I plan to bring in two more," said Gerry Veara, White Sands DPTMS.
+
+According to Sally Smoot, White Sands CPAC director at the time this article was written, the program is a win-win situation. "Our managers get to fill their jobs quickly, and we get to take care of our Soldiers who have taken care of us."
+
+"Under the Equal Employment Opportunity umbrella, the Wounded Warrior Co-Op Program fits well into the objectives of the Disabled Veterans Affirmative Action Program Plan. Those warriors who are a part of the Wounded Warrior Battalion have combat related disabilities they received while serving in the war on terrorism," said Liz Childers, EEO officer.
+
+Childers said it is the goal of the EEO office to ensure that disabled veterans are offered equal employment opportunity in the federal service. "With the collaborated effort of the Civilian Personnel Advisory Center and William Beaumont Army Medical Center, the objective is to recruit and employ those wounded warriors with the required skills needed to fulfill the mission of White Sands Missile Range," she said.
+
+Applications for this Program are available online at www.wsmr.army.mil/employment.
+
+Questions pertaining to this Program may be directed to Carol Main at (575) 678-7728, DSN 258-7728.
+Q:
+
+New column from previous columns in Pandas
+
+I have a pandas dataframe with some columns:
+>>data.columns.values
+array(['Sheet', 'Row', 'Column', 'Cell', 'V0', 'Thx', 'dV', 'Vd'], dtype=object)
+
+Each row contains a different value for the Sheet, Row, etc etc.
+From the info of Sheet, Row, etc I will create a PDF file title like this:
+title = Sheet%s_Row%s_Column%s_Cell%s.pdf
+So instead of iterating over each row of the DataFrame and create a single title each time, I wanted to directly create another column of strings called title and store the different titles like this:
+data['title'] = "Sheet%s_Row%s_Column%s_Cell%s" % (data['Sheet'], data['Row'], data['Column'], data['Cell'])
+
+But this is not working, seems like it is appending each Serie inside each %s
+How can I create this title column from the info on each row without having to iterate over the entire DataFrame?
+
+A:
+
+One way to do this would be using DataFrame.apply() with axis=1. Example -
+data['title'] = data.apply(lambda row: "Sheet{}_Row{}_Column{}_Cell{}".format(row['Sheet'], row['Row'], row['Column'], row['Cell']) , axis=1)
+
+Demo -
+In [52]: df = pd.DataFrame([['A','B'],['C','D'],['E','F']] , columns=['Sheet','row'])
+
+In [53]: df
+Out[53]:
+ Sheet row
+0 A B
+1 C D
+2 E F
+
+In [54]: df['title'] = df.apply(lambda row: "Sheet{}_row{}".format(row['Sheet'],row['row']) , axis=1)
+
+In [55]: df
+Out[55]:
+ Sheet row title
+0 A B SheetA_rowB
+1 C D SheetC_rowD
+2 E F SheetE_rowF
+
+
+The Joker (1960 film)
+
+The Joker () is a 1960 French comedy film directed by Philippe de Broca.
+
+Plot
+Edouard Berlon is a young, incorrigible seducer who moves very lightly from one affair to the next. He meets Helene Larouch, a woman married to André, a rich financier who is very busy with his affairs, leaving her in an emotionally arid life. Initially Helene resists Edouard's wooing, but as she gets to know his lively character, his eccentric lifestyle and his very unusual family environment, including his old uncle Théodose, his brother Pilou, servat Olga, some infants, and a few stray dogs, she lets herself become seduced. Their relation, however, turns out to be an ephemeral one as Edouard is busy seducing another woman.
+
+Cast
+
+ Anouk Aimée as Helene Larouch
+ Jean-Pierre Cassel as Edouard Berlon
+ Pierre Palau as Théodose
+ Geneviève Cluny as Pilou Berlon
+ Georges Wilson as Guillaume Berlon
+ Anne Tonietti as Olga
+ François Maistre as André Laroche
+ Jean-Pierre Rambal as Paul
+ Liliane Patrick as Solange
+ Irène Chabrier as Aline, servant at the inn
+
+Release
+The film had its premiere at the Locarno Film Festival in August 1960, but was not released commercially until 20 January 1961 in France and 7 August 1961 in New York. During the 2012 Cannes Film Festival, the film was presented with other classics at the Cinéma de la Plage, a non-competitive part of the official selection that is open to the public. In 12 November 2013, the film was presented at the Cinémathèque québécoise, Montréal.
+
+Critical response
+The film has been described as "a lot of genial fun" as the plot evolves. It also has been described as whimsical and in parts "nutty" for the eccentric lifestyle of the hero and his family. French critics, on the other hand, find subtle qualities in the presentation of the characters as uncle Théodose is described as "an original, old uncle" as well as poetic connotations in the overall work.
+
+References
+
+External links
+
+Category:1961 films
+Category:French films
+Category:French-language films
+Category:1960s romantic comedy films
+Q:
+
+C General sscanf return
+
+I'm trying to use the return value of sscanf function. The problem is that in the file that I'm reading, some lines may contain different number of integers. How can I tackle this problem?
+
+A:
+
+int values[5];
+int values_per_line = sscanf_s(line_buffer, "%d %d %d %d %d", &values[0], &values[1], &values[2], &values[3], &values[4]);
+
+`
+sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l:
+
+Return Value
+Each of these functions [including s_sscanf()] returns the number of fields that are successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end of the string is reached before the first conversion.
+
+
+The Decision Maker
+
+Credit unions are well aware of the growing revolution in payments. A recent report by McKinsey & Company (Global Payments 2015: A Healthy Industry Confronts Disruption) noted that, the growth of nonbank digital competitors over the next five years will increase downward pressure on transaction margins while increasing growth in electronic payments.
+
+The drivers for this trend are all too familiar:
+
+Large technology companies such as Apple, Google, Facebook, Amazon, Microsoft, Tencent and Alibaba, are some of the most significant nonbank competitors. These organizations are cash-rich and have virtually captive customer bases.
+
+Smartphones have become a crucial channel in the world of payments. With these devices comes a swarm of payment options. These range from the likes of Apple Pay to “In-App” purchases that provide an almost seamless user experience.
+
+Member expectations for technology-enabled experiences have grown considerably. Today’s members, like any other consumers, have experienced an unprecedented level of service via nonbank providers. Some may wonder why their favorite credit union does not have the same level of digital service.
+
+Despite all the hype about the electronics payments, adoption by credit union members may tend to be slower than the public at large. Members tend to be more conservative so fewer are likely to be enthusiastic early adopters.
+
+However, this does not mean credit unions are complacent about this growing trend. The industry, especially its larger players, has begun to respond vigorously with various “digital wallet” strategies. While these efforts are in the formative stages, it is imperative that credit unions position themselves to members as the trusted alternative for safe and secure digital payments. From this positioning, members can be educated and motivated to become loyal users of the credit union’s digital payment platform.
+
+A crucial element to make this strategy successful is analytics. Making effective decisions in this fast-paced environment is crucial. The ability to adjust the tactical underpinnings of the strategy on a monthly, weekly, or even daily basis depends on the availability of transactional data for analysis. Having data quickly available at this level of granularity requires a well-designed and well-tuned data warehouse. This tool provides an essential feedback loop for decision makers as they guide the digital payments strategy toward meeting member needs and keeping those payments (and their margins) close to the credit union.
+
+We are missing an opportunity in this space. I would suggest that digital wallets and the associated strategies for a credit union implementation are great and should be pursued. As an industry however, we should own the entire transaction stack from the rails to the transaction. Our mobile transaction rails currently are owned and controlled by companies that are not credit union friendly. Additionally, the advent of blockchain technology will push massive disruption at the current banking infrastructure. Some have predicted the complete demise of banking as it currently exists as a result. Bottom line is the industry is fast approaching the need to innovate or die in my view. With that in mind, there is new pursuit of solutions that address both lines of thinking. Unfortunately, as an industry we remain focused on the wrong things. Instead, we need to think much bigger.
+
+Subscribe to Email Updates
+
+You now have more information at hand about your credit union than ever before. But are you using it to "out-think" your rivals? If not, you may be missing out on a potent competitive tool.
+
+This blog will:
+
+Educate subscribers about data integration and Big Data and Analytics.
+Send this page to someone via email
+
+WARNING: The following story contains descriptions that some readers may find disturbing. Discretion is advised.
+
+Quebec City police say a 39-year-old man has been arrested in connection with what they are describing as an attempted murder of a woman in her 20s.
+
+The incident happened on Friday evening when police were called to Arago Street West at around 9 p.m. after a man set a woman on fire before fleeing the scene.
+
+Paramedics rushed the woman to hospital with life-threatening injuries.
+
+READ MORE: Man seriously injured after setting himself on fire outside south London government office, SIU says
+
+Police say she suffered serious burns to her face, back and hands.
+
+“We fear for her life,” police said in a written statement on Saturday.
+
+Story continues below advertisement
+
+The suspect was arrested Saturday morning at around 11:35 a.m. on Girardin Street in Drummondville, roughly 150 kilometres west of Quebec City.
+
+Quebec City police spokesperson Etienne Doyon said the suspect was the victim’s ex.
+
+READ MORE: Multiple injuries after vehicle crashes into Quebec City building
+
+Doyon said a warrant had been issued for his arrest. He was wanted for attempted murder and aggravated assault.
+
+He is being held by provincial police in Drummondville.
+
+Investigators with Quebec City police were en route to interview the suspect.
+
+Doyon said police had yet to interview the victim herself.
+
+He confirmed reports that the woman’s mother and children had witnessed the attack.
+
+“The children were placed in the care of the grandmother,” he said, adding that police made sure they were being provided with the necessary support.
+
+Martyn Allard, who says he’s the victim’s neigbour, told Global News he was standing on his second-floor balcony Friday night when he saw someone running by.
+
+“I thought he’d dropped a burning torch on the street,” he said, adding he only realized it was a person when she started running and screaming, “I’m on fire, I’m on fire, someone lit me on fire!”
+
+Story continues below advertisement
+
+READ MORE: Evacuation at Quebec City airport terminal lifted, operations return to normal
+
+Allard said he called 911 and then rushed to the woman’s side to try and help her.
+
+“I was yelling at her ‘Madame get on the ground, madame get on the ground,’ but she was burning up like a torch,” he said.
+
+He described a strong smell of gasoline as he approached the victim and said he ripped her burning clothes off as he waited for a neighbour to bring a blanket.
+
+Allard said he grasped the victim’s hands as she appeared wobbly and talked to her to keep her alert.
+
+“She was talking about her kids,” he said.
+
+Story continues below advertisement
+
+— With files from The Canadian Press
+CCSU professors accused of sexual misconduct with students
+
+Photo: Journal Register Co. Photo: Journal Register Co. Image 1 of / 3 Caption Close CCSU professors accused of sexual misconduct with students 1 / 3 Back to Gallery
+
+Central Connecticut State University President Zulma R. Toro announced Tuesday that she is seeking to fire two longtime theater professors after investigators concluded that each had likely engaged in sexual misconduct with one or more students.
+
+Toro also announced plans to appoint new leadership for the university’s Office of Diversity & Equity and to reorganize the human resources department after evidence showed that administrators for years failed to take proper action on complaints of sexual misconduct.
+
+The two professors are Joshua Perlstein, hired in 1992, who was placed on paid administrative leave in April, and Thomas Delventhal, who was hired in 1998 and was placed on paid leave last week. Both professors continue to draw their salaries, which are in the $100,000 range.
+
+“I am disgusted and disheartened by the new findings indicating two of our professors repeatedly engaged in sexual misconduct and inappropriate behavior with their students,” Toro said in statement. “Also disturbing are the apparent failures by administrators who, over the years, did not protect our students. The findings pinpoint vital changes that are needed to ensure past misbehaviors, mistakes and inaction are not repeated at this university.”
+
+Toro hired the Hartford law firm Shipman & Goodwin LLP nine months ago to conduct the investigation after an article appeared in CCSU’s student newspaper, The Recorder, revealing allegations of sexual misconduct by Perlstein. The same article also detailed a lack of administrative action when complaints were made.
+
+The investigation, which entailed reviewing thousands of documents, emails, and texts and interviews with dozens of faculty, staff and current and former students, found significant evidence that Perlstein was likely involved in sexual misconduct with several students, including a lengthy, manipulative relationship with one student that continued after her graduation.
+
+It also found that he had a “history of questionable interactions” with female students, was untruthful to investigators and attempted to conceal his problematic conduct because he believed it would put his job in jeopardy.
+
+Following up on students’ complaints about Delventhal, the investigators said that he admitted, over the years, to kissing five students on the neck and/or forehead, was untruthful during his investigatory interview, and denied attempting to engage in any relationship with current or former students.
+
+Perlstein said Tuesday he had “no comment at this time,” while Delventhal could not be reached for comment.
+
+Toro said she is taking the steps required by collective bargaining to dismiss both professors. She said the process involves “a number of faculty panels” and could take as long as a year, but she doesn’t expect the professors would continue to be paid that entire time.
+
+Besides appointing new leadership for the Office of Diversity & Equity, Toro said she plans to explore a new model for investigating sexual harassment, bullying and misconduct on campus, and to adopt an institution-wide reporting, monitoring and tracking system to collect and disseminate data, as well as taking other steps.
+
+Toro noted that the most recent chief diversity officer, Rosa Rodriguez, left her post on Friday for “personnel reasons” that Toro said she could not discuss. She did say that Rodriguez would be going to a new position at Capital Community College “for some time.”
+
+“To those who bravely shared their stories with out investigators, I am immensely grateful,” Toro said. “This has been a painful process for all of those involved. I am resolved to take the actions necessary to ensure our campus is a safe environment for all and to restore faith and pride in Connecticut’s oldest public institution of higher education.”
+
+Toro said she realized it may be a “sad day for the survivors, but at the same time I think it’s the beginning of a process that will help them heal and I think that will be positive at the end of the day.”
+
+Mark Ojakian, president of the Connecticut State Colleges and Universities, said he applauds Toro “for taking prompt and decisive action to make CCSU - and the theatre department in particular - a better, more welcoming learning environment.”
+
+He said the reports identify important steps needed to ensure that “all sexual misconduct complaints are received with the utmost seriousness, thoroughly investigated, and acted upon accordingly. I am beyond confident in the President’s ability to oversee and implement the necessary cultural and policy changes in a thoughtful and transparent manner.”
+
+A troubled theater department
+
+The investigators paint a picture of a theater department that is rife with tension and conflict among professors, while also quite informal. Those interviewed said that students and some faculty frequently socialize at parties or other gatherings where alcohol is consumed.
+
+In addition, those interviewed raised concerns with investigators about the “propriety” of some theater class exercises, such as massage circles.
+
+“It appears as though the informality of the department has led to a climate in which personal space and boundaries are not respected,” the report said.
+
+Faculty, administrators and students reported that there were ” rumors” about relationships between professors and students for years, which they believe have not been properly addressed, the report said.
+
+The report includes concerns that Rodriguez, the most recent chief diversity officer, as well as her predecessors, are “not welcoming or friendly, and in some cases intimidating and/or lacking follow through.”
+
+The investigators said the office is not fulfilling “the crucial function of receiving, investigating and addressing complaints.”
+
+In addition, the investigators found that Human Resources officials failed to interview complainants or witnesses about alleged misconduct involving theater faculty members.
+
+Rodriguez’s office referred questions about the report to the university’s public relations office.
+
+In at least one case, the report said, a former human resources officer named Anne Alling contacted a relevant potential witness and then later sent the same individual an email indicating that an interview was no longer required, even though the concern still existed and the faculty member remained employed at the university. In two other cases, another former Human Resources officer, Lou Pisano, failed to interview a relevant student witness before making a determination on the matter.
+
+Had the human resource office conducted further inquiry in those cases, the report said, “the outcome may have been substantially different and more significant prior discipline issued up to and including termination of the professor’s employment.”
+
+The report also said that it is troubling that other high level administrators did not take action to prevent a recurrence. The report says that a former dean and provost, Susan Pease, in setting goals for the theater department in 2014, said that faculty needed to “shape up,” adding that “shape up means: 1) they have to stop sleeping with students 2) they have to stop yelling at students and each other,” and several other goals including putting “on shows that people want to see.”
+
+“Despite the fact that she was aware of these complaints, she did not effectively address them,” the report said.
+
+Pease, who retired last February, said in an email Tuesday that the “goals” were sent “in an informal email to the acting chair of Theater I had recommended for appointment and represented my frustration with the department.”
+
+Students described Perlstein as ‘creepy’
+
+The report says nearly all of the students interviewed used the word “creepy” to describe Perlstein and reported that he routinely conducted warm-up exercises, improvisations and visualizations in class in which he sometimes asked students to imagine themselves naked or act out words representing various sexual activities such as “sex” and “orgasm.”
+
+Several students said they told investigators that at times they caught Perlstein looking at them during these exercises in ways that made them feel uncomfortable.
+
+Current and former students also told investigators that Perlstein would make comments about their weight, body parts and sexuality. He told one student she was not “sexual enough” to play a certain role. He also told that student, “You walk into a room and your tits are like bam.”
+
+Some told investigators that Perlstein seemed to deliberately choose plays that included sexual themes or nudity.
+
+The report tells of two instances in which Perlstein was accused of kissing students. The first was in the 1990s, when the student alleged that Perlstein approached her from behind and tried to kiss her on the lips while she stood outside the Black Box Theater at CCSU.
+
+The student managed to turn her head so the kiss landed on her cheek, according to the report, but Perlstein allegedly whispered to her that she should “not attempt to pull away when [he is] trying to kiss her.”
+
+A few weeks later the student confronted Perlstein and told him that he had made her uncomfortable and he should never attempt to do that again. The student told investigators that Perlstein was most concerned during that exchange about whether she had reported the incident to the university.
+
+The report said that during his interview with the investigators, Perlstein denied engaging in the alleged conduct or said it was the result of a “misunderstanding.” In the case involving the student outside the Black Box theater, the report said Perlstein claimed “he was merely trying to congratulate her after she allegedly told him that she was ‘getting married.'”
+
+The investigators said this is not “credible given the fact that the student was already married when she enrolled in the university a few years earlier.”
+
+Perlstein also disputed the account of a student in which he was found by CCSU to have engaged in “inappropriate behavior/sexual harassment.” The student accused him of kissing her, hugging her and touching her buttocks. Perlstein said he had been having an “emotional” not “sexual” conversation with her and kissed her on the cheek, but he denied touching her buttocks.
+
+According to Perlstein, the CCSU staff member at the time told him that “if we call it sexual harassment, it will go away.” Perlstein claimed that he was told that otherwise, there was a “high likelihood” that the matter would be pursued with authorities by the student’s “crazy father,” the report said. Perlstein therefore accepted the findings of the CCSU report because he thought it would end the inquiry, according to the Shipman & Goodwin report.
+
+Anna Kelly, who was the student in this incident and is now in her mid-30s living in Hartford, said she is encouraged to know the report will be “a catalyst to move the school forward — that it’s going to bring about actual change and actual consequences for these people who have gone unchecked and unpunished for a long time.”
+
+In his interview, the report said, Perlstein admitted that he engaged in a consensual relationship with a student he was teaching and advising in 2013, but claimed it was limited to a one or two weeks while he was advising her.
+
+But the report said that “substantial electronic communications” between the professor and the student demonstrate that their inappropriate relationship lasted for “an extended period of time” from 2013 until the summer of 2014 when the student graduated, with some breaks along the way.
+
+In August 2013, Perlstein was disciplined by the university for having a relationship with a student he was teaching and advising but the report says it is clear that both before and after that, Perlstein continued to advise, assist and direct activities involving the student.
+
+Perlstein said the relationship with the student, whether before or after she graduated, was consensual and not coercive, the report said. But the student told the investigators that she did not believe the relationship was “fully consensual on her part.”
+
+Because Perlstein was her adviser for her honors thesis, the student told investigators she believed she needed his assistance to successfully complete her project and graduate.
+
+“She claims that she felt as though she had no choice but to capitulate to his demands,” the report said.
+
+Evidence of their ongoing relationship can be found in multiple texts included in the report including one from early 2014, the report said, in which Perlstein says, “Sorry about attacking your butt … it was aggressive and wrong …have a swell day. Love yoi [sic] ”
+
+The texts included in the report depict a controlling and manipulative relationship in which Perlstein tried to keep the relationship going while the student tried to break it off, but feared that doing so might harm her academic and theater career.
+
+“The extensive communications demonstrate that he engaged in a long-term sexual relationship significantly beyond what any reasonable person would view as appropriate between a professor and student,” the report said. The report said further that the text messages demonstrate that Perlstein was aware his actions were wrong.
+
+Ashley Malloy, who has identified herself as the young woman who had the long relationship with Perlstein and who is now in a graduate school theater program in San Francisco said the reports offers “some relief that the truth is finally coming out but the fact that it’s this long overdue definitely doesn’t take the sting out of what has happened.”
+
+“To just read in no uncertain terms the extent to which the administration was aware of what was going on,” Malloy said, “is so disheartening and destroyed whatever little bit of faith I had left in the institution.”
+
+But she said she does applaud Toro’s actions.
+
+Delventhal admits kissing at least five students
+
+During his interview, Delventhal admitted that he probably kissed at least five students on the neck and forehead.
+
+Delventhal told investigator that this was a way of expressing his endearment for a student and explained that this was the manner in which he was kissed by female members of his family. He said he did not see it as inappropriate or sexual in nature.
+
+However, at least one student told investigator that his kisses made her uncomfortable.
+
+The investigators found that Delventhal “knew or should have known” that such contact was inappropriate and not in compliance with university policies.”
+Q:
+
+Is a virtual function of a template class implicitly instantiated?
+
+Consider the following code. Is it guaranteed that Derived::foo() will be instantiated? foo() is virtual and is called by a non-virtual function of the base class.
+#include
+
+class Base
+{
+public:
+ void bar() { foo(); }
+private:
+ virtual void foo() = 0;
+};
+
+template class Derived: public Base
+{
+public:
+ Derived(T t_) : t(t_) {}
+private:
+ void foo() override { std::cout << t; }
+ T t;
+};
+
+Derived make_obj()
+{
+ return Derived(7);
+}
+
+A:
+
+Standard section 14.7.1/11 says
+
+It is unspecified whether or not an implementation implicitly instantiates a virtual member function of a class template if the virtual member function would not otherwise be instantiated.
+
+However, for a typical vtable implementation, instantiating any constructor of the class requires a vtable for the class to exist, which must contain a pointer to the specialization's virtual function definition. So in practice the virtual function will probably be instantiated.
+
+
+Q:
+
+Show that $S_5$ does not have a quotient group isomorphic to $S_4$
+
+Show that $S_5$ does not have a quotient group isomorphic to $S_4$.
+
+If we to assume that $H$ is such a group, than $H$ must be normal in $S_5$ and $|H|=|S_5|/|S_4|=5$. So $H$ must be isomorphic to $\mathbb{Z}/5\Bbb Z$.
+That's as far as my logic goes. I couldn't arrive at a contradiction.
+Any ideas?
+
+A:
+
+The possible candidates for such an $H$ are the subgroups of $S_5$ that are cyclic of order 5. All elements of $S_5$ of order 5 are given by $5$-cycles. However, the subgroup generated by a 5-cycle is not normal, so no $H$ can exist, as desired.
+
+A:
+
+The kernel of a surjective homomorphism from $S_5$ to $S_4$ would have order $|S_5|/|S_4|=5.$ This is impossible because: $S_5$ has $1+4!=25$ elements of order $1$ or $5$; the image of each of those $25$ elements must have order $1$ or $5$ in $S_4$; but $S_4$ has no elements of order $5,$ so those $25$ elements must all belong to the kernel of the homomorphism.
+
+
+Forum of Private Business
+
+The Forum of Private Business or The Forum (The FPB) is a UK-based membership organisation which campaigns for the interests of small and medium-sized businesses. A member-funded organisation, it offers practical business advice and help, as well as offering a range of products and services to help its members save money. The Forum was established in 1977, is a non-party political organisation and represents over 25,000 UK businesses.
+
+Background
+The Forum (the FPB) was founded by Stan Mendham in 1977. Previously, Mendham had run an engineering business but was becoming increasingly concerned by the lack of understanding of smaller businesses in the economy and mounting red tape. He studied member-based organisations for smaller businesses in America and Canada, and decided to create a British equivalent.
+
+# Alphabet
+
+The language of a foreign text can often be identified by looking up characters specific to that language.
+
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ (Latin alphabet)
+ and no other – English, Indonesian, Latin, Malay, Swahili, Zulu
+ àäèéëïijöü – Dutch (Except for the ligature ij, these letters are very rare in Dutch. Even fairly long Dutch texts often have no diacritics.)
+ áêéèëïíîôóúû Afrikaans
+ êôúû – West Frisian
+ ÆØÅæøå – Danish, Norwegian
+ single diacritics, mostly umlauts
+ ÄÖäö – Finnish (BCDFGQWXZÅbcfgqwxzå are found only in names and loanwords, occasionally also ŠšŽž)
+ ÅÄÖåäö – Swedish (occasionally é)
+ ÄÖÕÜäöõü – Estonian (BCDFGQWXYZcfqwxyz are found only in names and loanwords, occasionally also ŠšŽž)
+ ÄÖÜẞäöüß – German
+ Circumflexes
+ ÇÊÎŞÛçêîşû – Kurdish
+ ĂÂÎȘȚăâîșț – Romanian
+ ÂÊÎÔÛŴŶÁÉÍÏâêîôûŵŷáéíï – Welsh; (ÓÚẂÝÀÈÌÒÙẀỲÄËÖÜẄŸóúẃýàèìòùẁỳäëöüẅÿ used also but much less commonly)
+ ĈĜĤĴŜŬĉĝĥĵŝŭ – Esperanto
+ Three or more types of diacritics
+ ÇĞİÖŞÜçğıöşü – Turkish
+ ÁÐÉÍÓÚÝÞÆÖáðéíóúýþæö – Icelandic
+ ÁÐÍÓÚÝÆØáðíóúýæø – Faroese
+ ÁÉÍÓÖŐÚÜŰáéíóöőúüű – Hungarian
+ ÀÇÉÈÍÓÒÚÜÏàçéèíóòúüï�� – Catalan
+ ÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸàâæçéèêëîïôœùûüÿ – French; (Ÿ and ÿ are found only in certain proper names)
+ ÁÀÇÉÈÍÓÒÚËÜÏáàçéèíóòúëüï (· only in Gascon dialect) – Occitan
+ ÁÉÍÓÚÂÊÔÀãõçáéíóúâêôà (ü Brazilian and k, w and y not in native words) – Portuguese
+ ÁÉÍÑÓÚÜáéíñóúü ¡¿ – Spanish
+ ÀÉÈÌÒÙàéèìòù – Italian
+ ÁÉÍÓÚÝÃẼĨÕŨỸÑG̃áéíóúýãẽĩõũỹñg̃ - Guarani (the only language to use g̃)
+ ÁĄĄ́ÉĘĘ́ÍĮĮ́ŁŃ áąą́éęę́íįį́łń (FQRVfqrv not in native words) – Southern Athabaskan languages
+ ’ÓǪǪ́ āą̄ēę̄īį̄óōǫǫ́ǭúū – Western Apache
+ 'ÓǪǪ́ óǫǫ́ – Navajo
+ ’ÚŲŲ́ úųų́ – Chiricahua/Mescalero
+ ąłńóż Lechitic languages
+ ćęłńóśźż Polish
+ ćśůź Silesian
+ ãéëòôù Kashubian
+ A, Ą, Ã, B, C, D, E, É, Ë, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ò, Ó, Ô, P, R, S, T, U, Ù, W, Y, Z, Ż – Kashubian
+ ČŠŽ
+ and no other – Slovene
+ ĆĐ – Bosnian, Croatian, Serbian Latin
+ ÁĎÉĚÍŇÓŘŤÚŮÝáďéěíňóřťúůý – Czech
+ ÁÄĎÉÍĽĹŇÓÔŔŤÚÝáäďéíľĺňóôŕťúý – Slovak
+ ĀĒĢĪĶĻŅŌŖŪāēģīķļņōŗū – Latvian; (ŌŖ and ōŗ no longer used in most modern day Latvian)
+ ĄĘĖĮŲŪąęėįųū – Lithuanian
+ ĐÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬÈẺẼÉẸÊỀỂỄẾỆÌỈĨÍỊÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢÙỦŨÚỤƯỪỬỮỨỰỲỶỸÝỴ đàảãáạăằẳẵắặâầẩẫấậèẻẽéẹêềểễếệìỉĩíịòỏõóọồổỗốơờởỡớợùủũúụưừửữứựỳỷỹýỵ – Vietnamese
+ ꞗĕŏŭo᷄ơ᷄u᷄ – Middle Vietnamese
+ ā ē ī ō ū – May be seen in some Japanese texts in Rōmaji or transcriptions (see below) or Hawaiian and Māori texts.
+ é – Sundanese
+ ñ - Basque
+ أ ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه ؤ و ئ ى ي ء Arabic script
+ Arabic, Malay (Jawi), Kurdish (Soranî), Panjabi / Punjabi, Pashto, Sindhi, Urdu, others.
+ پ چ ژ گ – Persian (Farsi)
+ Brahmic family of scripts
+ Bengali script
+ অ আ কা কি কী উ কু ঊ কূ ঋ কৃ এ কে ঐ কৈ ও কো ঔ কৌ ক্ কত্ কং কঃ কঁ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ৰ ল ৱ শ ষ স হ য় ড় ঢ় ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯
+ used to write Bengali and Assamese.
+ Devanāgarī
+ अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ऍ ऎ ए ऐ ऑ ऒ ओ ओ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ० १ २ ३ ४ ५ ६ ७ ८ ९ प् पँ पं पः प़ पऽ
+ used to write, either along with other scripts or exclusively, several Indian languages including Sanskrit, Hindi, Maithili, Magahi Marathi, Kashmiri, Sindhi, Bhili, Konkani, Bhojpuri and Nepali from Nepal.
+ Gurmukhi
+ ਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹ
+ primarily used to write Punjabi as well as Braj Bhasha, Khariboli (and other Hindustani dialects), Sanskrit and Sindhi.
+ Gujarati script
+ અ આ ઇ ઈ ઉ ઊ ઋ ઌ ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ ળ વ શ ષ સ હ ૠ ૡૢૣ
+ used to write Gujarati and Kachchi
+ Tibetan script
+ ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ
+ used to write Standard Tibetan, Dzongkha (Bhutanese), and Sikkimese
+ АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШ (Cyrillic alphabet)
+ ЙЩЬЮЯ
+ Ъ – Bulgarian
+ ЁЫЭ
+ Ў, no Щ, І instead of И (Ґ in some variants) – Belarusian
+ rarely Ъ – Russian
+ ҐЄІЇ – Ukrainian
+ ЉЊЏ, Ј instead of Й (Vuk Karadžić's reform)
+ ЃЌЅ – Macedonian
+ ЋЂ – Serbian
+ ЄꙂꙀЗІЇꙈОуꙊѠЩЪꙐЬѢЮꙖѤѦѨѪѬѮѰѲѴҀ – Old Church Slavonic, Church Slavonic
+ Ӂ – Romanian in Transnistria (elsewhere in Latin)
+ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρσςτυφχψω (Greek Alphabet) – Greek
+ אבגדהוזחטיכלמנסעפצקרשת (Hebrew alphabet)
+ and maybe some odd dots and lines above, below, or inside characters – Hebrew
+ פֿ; dots/lines below letters appearing only with א,י, and ו – Yiddish
+ no dots or lines around the letters, and more than a few words end with א (i.e., they have it at the leftmost position) – Aramaic
+ Ladino
+ 漢字文化圈 – Some East Asian Languages
+ and no other – Chinese
+ with あいうえおの Hiragana and/or アイウエオノ Katakana – Japanese
+ 위키백과에 (note commonplace ellipses and circles) Korean
+ ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ etc. -- ㄓㄨˋㄧㄣㄈㄨˊㄏㄠˋ (Bopomofo)
+ ㄪㄫㄬ -- not Mandarin
+ កខគឃងចឆជឈញដឋឌឍណតថទធនបផពភមសហយរលឡអវអ្កអ្ខអ្គអ្ឃអ្ងអ្ចអ្ឆអ្ឈអ្ញអ្ឌអ្ឋអ្ឌអ្ឃអ្ណអ្តអ្ថអ្ទអ្ធអ្នអ្បអ្ផអ្ពអ្ភអ្មអ្សអ្ហអ្យអ្រអ្យអ្លអ្អអ្វ អក្សរខ្មែរ (Khmer alphabet) - Khmer
+ Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք Օ Ֆ (Armenian alphabet) – Armenian
+ ა ბ გდ ევ ზ ჱ თ ი კ ლ მ ნ ჲ ო პ ჟ რ ს ტ ჳ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჴ ჯ ჰ ჵ ჶ ჷ ჸ (Georgian alphabet) – Georgian
+ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะา฿เแโใไๅๆ๏๐๑๒๓๔๕๖๗๘๙๚๛ (Thai script) - Thai
+ AEIOUHKLMNPW' Hawaiian alphabet - Hawaiian
+ ⴰⴱⴲⴳⴴⴵⴶⴷⴸⴹⴺⴻⴼⴽⴾⴿⵀⵁⵂⵃⵄⵅⵆⵇⵈⵉⵊⵋⵌⵍⵎⵐⵑⵒⵓⵔⵕⵖⵗⵘⵙⵚⵛⵜⵝⵞⵠⵡⵢⵣⵤⵥⵦⵧ Tifinagh, a script used for Tamazight (Berber)
+
+Latin alphabet (possibly extended)
+Romance languages
+
+Lots of Latin roots.
+French (Français)
+
+ Accented letters: â ç è é ê î ô û, rarely ë ï ; ù only in the word où, à only at the ends of a few words (including à). Never á í ì ó ò ú.
+ Angle quotation marks: « » (though "curly-Q" quotation marks are also used); dialogue traditionally indicated by means of dashes.
+ Common short words: la, le, les, un, une, des, de, du, à, au, et, ou, où, sur, il, elle, ils, se, je, vous, que, qui, y, en, si, ne, est, sont, a, ont.
+ Many apostrophised contractions for common pronouns and particles, i.e. words l' or d', less often c', j', m', n', s', t', or rarely z' — only before a word starting by a vowel or, in some cases, an h.
+ Common digraphs and trigraphs:
+ Vowels digraphs: au, ai, ei, ou. Word-final -ez.
+ Vowels digraphs (nasals): an, en, in, on, rarely un. For all of these, the n become m before b, p or m (e.g. embouchure, never *enbouchure).
+ Vowel trigraphs: eau, ein, ain, oin.
+ Consonant digraphs: ch, gu-. Rarely sh. Semi-consonant -ill-.
+ Letters w and k, are rare and used only in loanwords, most often from Germanic languages (e.g whisky).
+ Ligatures œ and æ are conventional but are rarely used (a few words are well known, e.g. œil, œuf(s), bœuf(s), most other are scientific/technical and borrowed from Latin).
+ Words ending in -aux, -eux, or -oux.
+
+Spanish (Español)
+
+ Characters: ¿ ¡ (inverted question and exclamation marks), ñ
+ All vowels (á, é, í, ó, ú) may take an acute accent
+ The letter u can take a diaeresis (ü), but only after the letter g
+ Some words frequently used: de, el, del, los, la(s), uno(s), una(s), y
+ No apostrophised contractions
+ No use of grave accent
+ Letters k and w are rare and only used in loanwords (e.g. walkman)
+ Word beginnings: ll- (check not Welsh or Catalan) double L (ll)
+ Word endings: -o, -a, -ción, -miento, -dad
+ Angle quotation marks: « » (though "curly-Q" quotation marks are also used); dialogue often indicated by means of dashes
+
+Italian (Italiano)
+
+ Almost every native word ends in a vowel. Example exceptions include non, il, per, con, del.
+ Common one-letter word: è.
+ Common word: perché.
+ Letter sequences: gli, gn, sci.
+ Letters j, k, w, x and y are rare and used only in loanwords (e.g. whisky).
+ Word endings: -o, -a, -zione, -mento, -tà, -aggio.
+ Grave accent (e.g., on à) almost always occurs in the last letter of words.
+ Double consonants (tt, zz, cc, ss, bb, pp, ll, etc.) are frequent.
+
+Catalan (Català)
+
+ Characters: à, è, é, í, ï, ò, ó, ú, ü, ç, ·
+ Character combination tz (also common in Basque, however) and l·l
+ Syllables and words ending in -aig, -eig, -oig, -uig, -aix, -eix, -oix, -uix
+ Letter sequences: tx (also common in Basque, however) and tg
+ Letter y is only used in the combination ny and loanwords
+ Letters k and w are rare and only used in loanwords (e.g. walkman)
+ Word endings: -o, -a, -es, -ció, -tat, -ment
+ Word beginning: ll- (also common in Spanish and Welsh, however)
+ Common words: això, amb, mateix, tots, que
+
+Romanian (Română)
+
+ Characters: ă â î ș ț
+ Common words: și, de, la, a, ai, ale, alor, cu
+ Word endings: -a, -ă, -u, -ul, -ului, -ție (or -țiune), -ment, -tate; names ending in -escu
+ Double and triple i: copii, copiii
+ Note that Romanian is sometimes written online with no diacritics, making it harder to identify. A cedilla is sometimes used on S (ş) and on T (ţ) instead of the correct diacritic, the comma (above).
+
+Portuguese (Português)
+
+ Characters: ã, õ, â, ê, ô, á, é, í, ó, ú, à, ç
+ Common one-letter words: a, à, e, é, o
+ Common two-letter words: ao, as, às, da, de, do, em, os, ou, um
+ Common three-letter words: aos, com, das, dos, ele, ela, mas, não, por, que, são, uma
+ Common endings: -ção, -dade, -ismo, -mente
+ Common digraphs: ch, nh, lh; examples: chave, galinha, baralho.
+ The letters k, w and y are rare. They are found mostly in loanwords, e.g.: keynesianismo, walkie-talkie, nylon.
+ Most singular words end in a vowel, l, m, r, or z.
+ Plural words end in -s.
+
+Walloon (Walon)
+
+ Characters: å, é, è, ê, î, ô, û
+ Common digraphs and trigraphs: ai, ae, én, -jh-, tch, oe, -nn-, -nnm-, xh, ou
+ Common one-letter words: a, å, e, i, t', l', s', k'
+ Common two-letter words: al, ås, li, el, vs, ki, si, pô, pa, po, ni, èn, dj'
+ Common three-letter words: dji, nén, rén, bén, pol, mel
+ Common endings: -aedje, -mint, -xhmint, -ès, -ou, -owe, -yî, -åcion
+ Apostrophes are followed by a space (preferably non breaking one), eg: l' ome instead of l'ome.
+
+Galician (Galego)
+
+ Similar to Portuguese; the indefinite article "unha" (fem. plural), the suffix -ción and a heavier usage of the letter "x" usually sign Galician.
+ Definite articles o (masc. sing.), os (masc. plural), a (fem. sing.), as (fem. plural)
+ Common diagraphs: nh (ningunha)
+ The letters j, k, w and y are not in the alphabet, and appear only in loanwords
+
+Germanic languages
+English
+
+ words: a, an, and, in, of, on, the, that, to, is, what, I (I is always capital when talking about oneself)
+ letter sequences: th, ch, sh, ough, augh, qu
+ word endings: -ing, -tion, -ed, -age, -s, -’s, -’ve, -n’t, -’d
+ diacritics or accents only in loanwords (piñata)
+
+Dutch (Nederlands)
+
+ letter sequences ij (capitalized as IJ, and also found as a ligature, IJ or ij), ei, ou, au, oe, doubled vowels (but not ii), kw, ch, sch, oei, ooi, aai and uw (especially eeuw, ieuw, auw, and ouw).
+ all consonants, except h, j, q, v, w, x and z can be doubled.
+ the letters c (except in the sequence (s)ch), q, x and y are almost only found in loanwords.
+ words: het, op, en, een, voor (and compounds of voor).
+ word endings: -tje, -sje, -ing, -en, -lijk,
+ at the start of words: z-, v-, ge-
+ t/m occasionally occurs between two points in time or between numbers (e.g. house numbers).
+
+West Frisian (Frysk)
+
+ letter sequences: ij, ei, oa
+ words: yn
+
+Afrikaans (Afrikaans)
+
+ Words: 'n, as, vir, nie.
+ Similar to Dutch, but:
+ the common Dutch letters c and z are rare and used only in loanwords (e.g. chalet);
+ the common Dutch vowel ij is not used; instead, i and y are used (e.g. -lik, sy);
+ the common Dutch word ending -en is rare, being replaced by -e.
+
+German (Deutsch)
+
+ umlauts (ä, ö, ü), ess-zett (ß)
+ letter sequences: ch, sch, tsch, tz, ss,
+ common words: der, die, das, den, dem, des, er, sie, es, ist, ich, du, aber
+ common endings: -en, -er, -ern, -st, -ung, -chen, -tät
+ rare letters: x, y (except in loanwords)
+ letter c rarely used except in the sequences listed above and in loanwords
+ long compound words
+ a period (.) after ordinal numbers, e.g. 3. Oktober
+ many capitalised words in the middle of sentences since German capitalizes all nouns.
+
+Swedish (Svenska)
+
+ letters å, ä, ö, rarely é
+ common words: och, i, att, det, en, som, är, av, den, på, om, inte, men
+ common endings: -ning, -lig, -isk, -ande, -ade, -era, -rna
+ common surname endings: -sson, -berg, -borg, -gren, -lund, -lind, -ström, -kvist/qvist/quist
+ long compound words
+ letter sequences: stj, sj, skj, tj, ck, än
+ no use of characters w, z except for foreign proper nouns and some loanwords but x is used, unlike Danish and Norwegian, which replace it with ks
+ doubling of consonants common, but doubling of vowels very rare
+
+Danish (Dansk)
+
+ letters æ, ø, å
+ common words: af, og, til, er, på, med, det, den;
+ common endings: -tion, -ing, -else, -hed;
+ long compound words;
+ no use of character q, w, x and z except for foreign proper nouns and some loanwords;
+ to distinguish from Norwegian: uses letter combination øj; frequent use of æ; spellings of borrowed foreign words are retained (in particular use of c), such as centralstation.
+ doubling of consonants common, but doubling of vowels very rare
+
+Norwegian (Norsk)
+
+ letters æ, ø, å
+ common words: av, ble, er, og, en, et, men, i, å, for, eller;
+ common endings: -sjon, -ing, -else, -het;
+ long compound words;
+ no use of character c, w, z and x except for foreign proper nouns and some loanwords;
+ two versions of the language: Bokmål (much closer to Danish) and Nynorsk – for example ikke, lørdag, Norge (Bokmål) vs. ikkje, laurdag, Noreg (Nynorsk); Nynorsk uses the word òg; printed materials almost always published in Bokmål only;
+ to distinguish from Danish: uses letter combination øy; less frequent use of æ; spellings of borrowed foreign words are ‘Norsified’ (in particular removing use of c), such as sentralstasjon.
+ doubling of consonants common, but doubling of vowels very rare
+
+Icelandic (Íslenska)
+
+ letters á, ð, é, í, ó, ú, ý, þ, æ, ö
+ common beginnings: fj-, gj-, hj-, hl-, hr-, hv-, kj-, and sj-,
+ common endings: -ar (especially -nar), -ir (especially -nir), -ur, -nn (especially -inn)
+ no use of character c, q, w, or z except for foreign proper nouns, some loanwords, and, in the case of z, older texts.
+ doubling of consonants common, but doubling of vowels very rare
+
+Faroese (Føroyskt)
+
+ letters á, ð, í, ó, ú, ý, æ, ø
+ letter combinations: ggj, oy, skt
+ to distinguish from Icelandic: does not use é or þ, uses ø instead of ö (occasionally rendered as ö on road signs, or even ő).
+ doubling of consonants common, but doubling of vowels very rare
+
+Baltic languages
+Latvian (Latviešu)
+
+ uses diacritics: ā, č, ē, ģ, ī, ķ, ļ, ņ, ō, ŗ, š, ū, ž
+ does not have letters: q, w, x, y
+ no longer uses ō or ŗ in modern language
+ extremely rare doubling of vowels
+ rare doubling of consonants
+ a period (.) after ordinal numbers, e.g. 2005. gads
+ common words: ir, bija, tika, es, viņš
+
+Lithuanian (Lietuvių)
+
+ visual abundance of letters ą, č, ę, ė, į, š, ų, ū, ų
+ does not have letters q, w, x
+ extremely rare doubling of vowels and consonants
+ many varying forms (usually endings) of the same word, e.g. namas, namo, namus, namams, etc.
+ generally long words (absence of articles and fewer prepositions in comparison to Germanic languages)
+ common words: ir, yra, kad, bet.
+
+Slavic languages
+Polish (Polski)
+
+ consonant clusters rz, sz, cz, prz, trz
+ includes: ą, ę, ć, ś, ł, ń, ó, ż, ź
+ words w, z, we, i, na (several one-letter words)
+ words jest, się
+ words beginning with był, będzie, jest (forms of copula być, "to be").
+
+Czech (Čeština)
+
+ visual abundance of letters ž š ů ě ř
+ words je, v
+ to distinguish from Slovak: does not use ä, ľ, ĺ, ŕ or ô; ú only appears at the beginning of words.
+
+Slovak (Slovenčina)
+
+ visual abundance of letters ž š č;
+ uses: ä, ľ, and ô and (very rarely) ĺ and ŕ;
+ typical suffixes: -cia, -ť;
+ to distinguish from Czech: does not use ě, ř or ů.
+
+Croatian (Hrvatski)
+
+ similar to Serbian
+ letters-digraphs dž, lj, nj
+ does not have q, w, x, y
+ typical suffixes: -ti, -ći
+ special letters: č, ć, š, ž, đ
+ common words: a, i, u, je
+ to distinguish from Serbian: sequences -ije- and -je- are common; verbs ending in -irati, -iran
+
+Serbian (Srpski/Српски)
+Serbian Latin
+
+ similar to Croatian
+ letters-digraphs dž, lj, nj (lj and nj are somewhat more common than dž, although not by much)
+ no q, w, x, y
+ typical verb suffixes -ti, -ći (infinitive is much less used than in Croatian)
+ foreign words might end in -tija, -ovan, -ovati, -uje
+ special letters: đ (rare), č, š (common), ć, ž (less common)
+ common words: a, i, u, je, jeste
+ future tense suffix -iće, -ićeš, -ićemo, -ićete (not found in Croatian)
+ vowel sequences -ije- and -je- are very often in Serbian that is spoken in Bosnia and Herzegovina, Montenegro and Croatia (ijekavica), but it does not appear in Serbia because each of those sequences are substituted with -e- (ekavica).
+
+Serbian Cyrillic
+
+ uses Џ, Ј, Љ, Њ, Ђ, Ћ
+ does not use Щ, Ъ, Ы, Ь, Э, Ю, Я, Ё, Є, Ґ, Ї, І, Ў
+ to distinguish from Macedonian: does not use Ѕ, Ѓ, Ќ
+
+Celtic languages
+Welsh (Cymraeg)
+
+ letters Ŵ, ŵ used in Welsh
+ words y, yr, yn, a, ac, i, o
+ letter sequences wy, ch, dd, ff, ll, mh, ngh, nh, ph, rh, th, si
+ letters not used: k, q, v, x, z
+ letter only used rarely, in loanwords: j
+ commonly accented letters: â, ê, î, ô, û, ŵ, ŷ, although acute (´), grave (`), and dieresis (¨) accents can hypothetically occur on all vowels
+ word endings: -ion, -au, -wr, -wyr
+ y is the most common letter in the language
+ w between consonants (w in fact represents a vowel in the Welsh language)
+ circumflex accent (^) is by far the commonest diacritical mark, although diacritics are often omitted altogether
+
+Irish (Gaeilge)
+
+ vowels with acute accents: á é í ó ú
+ words beginning with letter sequences bp dt gc bhf
+ letter sequences sc cht
+ no use of the letter J, K, Q, V, W.
+ frequent bh, ch, dh, fh, gh, mh, th, sh
+ to distinguish from (Scottish) Gaelic: there may be words or names with the second (or even third) letter capitalized instead of the first: hÉireann.
+
+Scottish Gaelic (Gàidhlig)
+
+ vowels with grave accents: à è ì ò ù (é and ó still occasionally seen but usage is now discouraged)
+ letter sequences sg chd
+ frequent bh, ch, dh, fh, gh, mh, th, sh
+ to distinguish from Irish: prefixes are hyphenated, so capitals in the middle of words generally do not occur: an t-Oban.
+
+Albanian (Shqip)
+
+ unique letters: ë, ç.
+ ë is the most common letter in the language.
+ the letter w is not used except in loanwords.
+ dh, gj, ll, nj, rr, sh, th, xh, and zh are considered one letter instead of two.
+ common words: po, jo, dhe, i, të, me
+
+Maltese (Malti)
+
+ unique letters: ċ, ġ, ħ, għ, ħ, ż
+ semitic origin, fairly intelligible with Arabic
+ uses il-xxx for the definite article
+
+Iranian languages
+Kurdish (Kurdî / كوردی)
+
+ uses circumflex ( ^ ): ê, î, û and cedilla ( ¸ ): ç, ş
+ the word xwe (oneself, myself, yourself etc.) appears frequently and is highly specific (xw combination)
+ ( I, i ) is the most common letter in the language
+ uses eight vowels (a, e, ê, i, î, o, u, û)
+ impossible to find a word without any vowel
+ has lots of compound words
+
+Finno-Ugric languages
+Finnish (Suomi)
+
+ distinct letters å, ä and ö; but never õ or ü (y takes the place of ü)
+ b, f, z, š and ž appear in loanwords and proper names only; the last two are substituted with sh or zh in some texts
+ c, q, w, x, å appear in (typically foreign) proper names only
+ outside of loanwords, d appears only between vowels or in hd
+ outside of loanwords, g only appears in ng
+ outside of loanwords, words do not begin with two consonants; this is reflected in the general syllable structure, where consonant clusters only occur across syllable boundaries, except in some loanwords
+ common words: sinä, on
+ common endings: -nen, -ka/-kä, -in, -t (plural suffix)
+ common vowel combinations: ai, uo, ei, ie, oi, yö, äi
+ unusually high degree of letter duplication, both vowels and consonants will be geminated, for example aa, ee, ii, kk, ll, ss, yy, ää
+ frequent long words
+
+Estonian (Eesti)
+
+ distinct letters: õ, ä, ö and ü; but never ß or å
+ similar to Finnish, except:
+ letter y is not used, except in loanwords (ü is the corresponding vowel)
+ letters b and g (without preceding n) are found outside of loanwords
+ occasional use of š and ž, mainly in loanwords (plus combination tš)
+ loanwords more common generally than in Finnish, mainly loaned from German
+ words end in consonants more frequently than in Finnish, word-final b, d, v being particularly typical
+ letter d is much more common in Estonian than in Finnish, and in Estonian it is often the last letter of the word (plural suffix), which it never is in Finnish
+ double öö more common than in Finnish; other doubles can include õõ, üü, rarely hh (for German ch) and even šš
+ common words: ja, on, ei, ta, see, või.
+
+Hungarian (Magyar)
+
+ letters ő and ű (double acute accent) unique to Hungarian
+ accented letters á and é frequent
+ letter combinations: cs, dz, dzs, gy, ly, ny, sz, ty, zs (all classed as separate letters), leg‐, ‐obb (note: sz also common in Polish)
+ common words: a, az, ez, egy, és, van, hogy
+ letter k very frequent (plural suffix)
+
+Eskimo–Aleut languages
+Greenlandic
+
+ long polysynthetic words (a single word can number 30+ letters)
+ relatively abundant n, q (not necessarily followed by u), u
+ ubiquitous double consonants and vowels (aa, ii, qq, uu, more rarely ee, oo)
+ vowels a, i, u conspicuously more frequent than e, o (which are only found before q and r)
+ no diphthongs except occasional word-final ai, only consonant combinations besides double consonants and (n)ng consist of r + consonant
+ old spellings (now abolished in spelling reform) sometimes included acute accent, circumflex and/or tilde: Qânâq vs. Qaanaaq.
+
+Southern Athabaskan languages
+
+ vowels with acute accent, ogonek (nasal hook), or both: á, ą, ą́
+ doubled vowels: aa, áá, ąą, ą́ą́
+ slashed l: ł (check not Polish!)
+ n with acute accent: ń
+ quotation mark: ' or ’
+ sequences: dl, tł, tł’, dz, ts’, ií, áa, aá
+ may have rather long words
+
+Navajo (Diné bizaad)
+
+In addition to the above,
+
+ does not use u, ú, or ų
+
+(Mescalero / Chiricahua) (Mashgaléń / Chidikáágo)
+
+In addition to the above,
+
+ uses: u, ú, ų
+ does not use o, ó, or ǫ
+
+Guaraní
+
+ lots of tildes over vowels (including y) and n
+ tilde over g: g̃—it's the only language in the world to use it. Example words: hagũa and g̃uahẽ.
+ b, d, and g usually do not occur without m or n before (mb, nd, ng) unless they're Spanish loan words.
+ f, l, q, w, x, z extremely rare outside loan words
+ does not use c without h: ch
+
+Japanese in Romaji (Nihongo/日本語)
+
+ words: desu, aru, suru, esp. at end of sentences;
+ word endings: -masu, -masen, -shita;
+ letters: Japanese almost always alternates between a consonant and a vowel. Exceptions are digraphs shi and chi, affricate tsu, gemination (two of the same consonant in a row) and palatalization (a consonant followed by the letter y).
+ a macron or circumflex may be used to indicate doubled vowels, eg. Tōkyō
+ common words: no, o, wa, de, ni
+
+(Note: Romaji is not often used in Japanese script. It is most often used for foreigners learning the pronunciation of the Japanese language.)
+Hmong (Hmoob) written in Romanized Popular Alphabet
+
+ Almost all written words are quite short (one syllable).
+ Syllables (unless they are pronounced with mid tone) end in a tone letter: one of b s j v m g d, leading to apparent "consonant clusters" such as -wj
+ w can be the main vowel of a syllable (e.g. tswv)
+ Syllables can begin with sequences such as hm-, ntxh-, nq-.
+ Syllables ending in double vowels (especially -oo, -ee) possibly followed by a tone letters (as in Hmoob "Hmong").
+
+Vietnamese (tiếng Việt)
+
+ Roman characters with more than one diacritical mark on the same vowel. See above.
+ Almost all written words are quite short (one syllable, mostly less than six characters long).
+ Words beginning with ng or ngh
+ Words ending with nh
+ common words: cái, không, có, ở, của, và, tại, với, để, đã, sẽ, đang, tôi, bạn, chúng, là
+
+Vietnamese Quoted-Readable (VIQR)
+
+ The following characters (often in combination) after vowels: ^ ( + ' ` ? ~ .
+ DD, Dd, or dd
+ The following character before punctuation: \
+
+Vietnamese VNI encoding
+
+ The digits 1-8 after vowels
+ The digit 9 after a D or d
+ The following character before numbers: \
+
+Vietnamese Telex
+
+ The following characters after vowels: s f r x j
+ The following vowels, doubled up: a e o
+ The letter w after the following characters: a o u
+ DD, Dd, or dd
+
+Chinese, Romanized
+Standard Mandarin (現代標準漢語)
+
+ In general, Mandarin syllables end only in vowels or n, ng, r; never in p, t, k, m
+
+Pinyin
+
+ Words beginning with x, q, zh
+ Tone marks on vowels, such as ā, á, ǎ, à
+ For convenience while using a computer, these are sometimes substituted with numbers, e.g. a1, a2, a3, a4
+
+Wade–Giles
+
+ Words do not begin with b, d, g, z, q, x, r
+ Words beginning with hs
+ Many hyphenated words
+ Apostrophes after initial letters or digraphs, e.g. t'a, ch'i
+
+Gwoyeu Romatzyh
+
+ Many unusual vowel combinations such as ae, eei, ii, iee, oou, yy, etc.
+ Insertion of r, e.g. arn, erng, etc.
+ Words ending in nn, nq
+
+Southern Min / Min-Nan (Bân-lâm-gí/Bân-lâm-gú) in Pe̍h-ōe-jī
+
+ Many hyphenated words.
+ Words can end in p, t, k, m, n, ng, h; never r
+ Roman characters with many diacritical marks on vowels. Unlike Vietnamese, each character has at most one such mark.
+ Unusual combining characters, namely · (middle dot, always after o) and | (vertical bar). ¯ (macron) is also common.
+
+Austronesian languages
+Malay (bahasa Melayu) and Indonesian (bahasa Indonesia)
+
+May contain the following:
+Prefixes: me-, mem-, memper-, pe-, per-, di-, ke-
+Suffixes: -kan, -an, -i
+Others (these almost always written in lowercase): yang, dan, di, ke, oleh, itu
+
+Malay and Indonesian are mutually intelligible to proficient speakers, although translators and interpreters will generally be specialists in one or other language. See Comparison of Standard Malay and Indonesian.
+
+Frequent use of the letter 'a' (comparable to the frequency of the English 'e').
+Polynesian languages
+
+Most Polynesian languages use A E F G H I K L M N O P R S T U V and ʻ (sometimes written ' or Q)
+
+ L : Nuclear Polynesian languages (Tongan, Samoan, Tuvaluan, Tokelauan...) as in fale
+ R : Eastern Polynesian languages (NZ Māori, Tahitian, Cook Islands Māori, Rapa Nui...) as in fare
+ K : most Polynesian languages except Hawaiian, Samoan, Tahitian
+ H : most Polynesian languages except Samoan
+ WH : NZ Māori (whenua)
+ Consonants always separated by one or more vowels (fenua, Haʻapai, ʻolelo)
+ Short and long vowels, written either with a macron (āēīōū) or by replication (aa, ee, ii, oo, uu)
+ Frequent diphtongs (oiaue, māori)
+ Words always end with a vowel
+ Loanwords are translitterated (like in Japanese): Sesu Kilisito=Jesus Christ, polokalama=program)
+ Frequent English or French loanwords (depending on colonial history)
+
+Tongan (lea fakatonga)
+
+ A E F H I K L M N NG O P S T U V ʻ
+ ng (Tonga), h, endings in -onua (fonua)
+ article te
+ frequent words: 'o, te, ki, mei, i, faka-
+ English loanwords
+
+Samoan (gagana samoa)
+
+ A E F G I L M N O P S T U V ʻ
+ no K letter, uses okina (ʻ) or nothing instead (faka in Tongan is faʻa in Samoan)
+ frequent use of L (le)
+ frequent words: o, e, le, se, a, i, ma
+
+Wallisian (lea faka'uvea)
+
+ A E F G H I K L M N O P S T U V ʻ
+ distinguish from Tongan: g instead of ng (tokaga)
+ article te
+ h is more frequent than s (tahi)
+ frequent words: ko, te, ki, mai, i, o, ne'e, e, mo, faka-
+ French loanwords
+
+East Futunan (lea fakafutuna)
+
+ A E F G H I K L M N O P S T U V ʻ
+ article le
+ frequent words: ko, le, ki, mei, i, o, mo, faka-
+ distinguish from Wallisian: S is more frequent than H (tasi)
+ distinguish from Samoan: letter K
+ French loanwords
+
+Turkic languages
+
+Note that some Turkic languages like Azeri and Turkmen use a similar Latin alphabet (often Jaŋalif) and similar words, and might be confused with Turkish. Azeri has the letters Əə, Xx and Qq not present in the Turkish alphabet, and Türkmen has Ää, Žž, Ňň, Ýý and Ww. Latin Characters uniquely (or nearly uniquely) used for Turkic languages: Əə, Ŋŋ, Ɵɵ, Ьь, Ƣƣ, Ğğ, İ, and ı. All Turkic languages can form long words by adding multiple suffixes.
+Turkish (Türkçe/Türkiye_Türkçesi)
+Turkish Alphabet
+
+Lowercase: a b c ç d e f g ğ h ı i j k l m n o ö p r s ş t u ü v y z
+
+Uppercase: A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z
+Common words
+
+ bir — one, a
+ bu — this
+ ancak — but
+ oldu — was (happened)
+ şu — that
+
+Misc.
+
+ The letter "j" is only used in loanwords.
+ Words never begin with "ğ"
+ Look for common word endings. Tense changes in Turkish verbs are created by adding suffixes to the end of the verb. Pluralizations occur by adding -lar and -ler.
+ Common Tense Changes: -yor -mış -muş -sun
+ Possessivity/person: -im -un -ın -in -iz -dur -tır
+ Example: Yaptı , "[He] did it"; Yap is the verb stem meaning "to do", -mış indicates the perfect tense, -tır indicates the third person (he/she/it).
+ Example: Adalar, "Islands"; Ada is a noun meaning "island", -lar makes it plural.)
+ Example: Evimiz, "Our house"; Ev is a noun meaning "house", -im indicates the first-person possessor, which -iz then makes plural.)
+
+Azeri (Azərbaycanca)
+
+Azeri can be easily recognized by the frequent use of ə. This letter is not used in any other officially recognized modern Latin alphabet. In addition, it uses the letters x and q, which are not used in Turkish.
+
+ Common words: və, ki, ilə, bu, o, isə, görə, da, də
+ Frequent use of diacritics: ç, ğ, ı, İ, ö, ş, ü
+ Words ending in -lar, -lər, -ın, -in, -da, -də, -dan, -dən
+ Words never beginning with ğ or ı
+ Words rarely beginning with two or more consonants
+ Transliteration of foreign words and names, e.g. Audrey Hepburn = Odri Hepbern
+
+Chinese (中文)
+
+ No spaces, except between punctuation marks and (sometimes) foreign words.
+ Arabic numerals (0-9) sometimes used
+ Punctuation:
+ Period 。(not .)
+ Serial comma 、(distinguished from the regular comma ,)
+ Ellipse …… (six dots)
+ No hiragana, katakana, or hangul
+ May be written vertically
+
+Simplified Chinese (简体) vs Traditional Chinese (繁體)
+
+Note: Many characters were not simplified. As a result, it is common for a short word or phrase to be identical between Simplified and Traditional, but it is rare for an entire sentence to be identical as well.
+
+Common radicals different between Traditional and Simplified:
+
+ Simplified: 讠钅饣纟门(e.g. 语 银 饭 纪 问)
+ Traditional: 訁釒飠糹門(e.g. 語 銀 飯 紀 問)
+
+Common characters different between Traditional and Simplified:
+
+ Simplified: 国 会 这 来 对 开 关 门 时 个 书 长 万 边 东 车 爱 儿
+ Traditional: 國 會 這 來 對 開 關 門 時 個 書 長 萬 邊 東 車 愛 兒
+
+Standard written Chinese (based on Mandarin) vs written Vernacular Cantonese
+See also: zh:粵語
+
+Note: Apart from Hong Kong, there are also Cantonese-speakers in southern Mainland China, Malaysia and Singapore[1], so written Cantonese can be written in either Simplified or Traditional characters.
+
+
+Common characters in Vernacular Cantonese that do not occur or seldom occur in Mandarin:
+
+ 嘅 咗 咁 嚟 啲 唔 佢 乜 嘢 嗰 冇 睇
+
+Some of the above characters are not supported in all character encodings, so sometimes the 口 radical on the left is substituted with a 0 or o, e.g.
+
+ o既 0既
+
+
+Sometimes, different Chinese characters are used to express the same meaning in Cantonese and Mandarin. If you use the one commonly used in Cantonese to express the same meaning when you are speaking or writing Mandarin, a native speaker may be confused or even find it difficult to understand, and vice versa. Some examples are: (Cantonese vs Mandarin)
+
+ 食vs���(eat) 飲vs喝(drink) 企vs站(stand) 凍vs冷(cold) 落vs下(down) 著vs穿(wear) 讀vs唸(read) 鬧vs罵(scold) 計vs算(calculate) 咪vs別(do not) 行vs走(walk/go) 先vs才(then)
+
+
+There are Chinese words used to construct vocabularies used in Cantonese that are not or seldomly implemented in modern Mandarin. Some examples are: (Cantonese vs Mandarin)
+
+ 成日vs整天(always) 傾計vs聊天(talk) 返工vs上班(go to work) 溫書vs溫習(study) 影片vs視頻(video) 隔離vs旁邊(nearby) 起屋vs蓋樓(build a house) 聽日vs明天(tomorrow) 巴閉vs囂張(arrogant) 搞掂vs完成(finished) 定係vs還是(or) 靚仔vs帥哥(handsome male) 鍾意vs喜歡(like) 犀利vs厲害(powerful) 同埋vs和/及(and) 黐綫vs瘋的(crazy) 雪櫃vs冰箱(fridge)
+
+
+Cantonese vocabularies constructed by Cantonese words are used in daily life in southern China and are not used in modern Mandarin. Some examples are:
+
+ 咪咁(don't be like this) 好冇(ok?) 玩嘢(to play tricks) 做嘢(to work) 睇戲(to watch a film/movie) 唔知(don't know) 埋嚟(come) 嗰個(that) 咁嘅嘢(such thing) 佢哋(they) 咩事/乜事(what?) 冇嘢(nothing) 嗰陣(at that moment) 越嚟越多(more and more) 我嘅(mine) 梗係(of course) 𥄫(to peek) 冧佢(love him/her) 拎畀我(take it to me) 嘥曬(everything is wasted) 你啱(you are right) 𢫏住(to cover something) 冚唪唥(all) 撳實(to press something tightly) 瞓覺(to sleep) 掟石仔(to throw a tiny stone) 唓[a modal word to express comtemption] 噃[a modal word for reminding or warning someone] 詏交(to argue) 好嬲(very angry) 心悒(feeling depressed in heart) 𧨾女仔(to please a girl) 得咁多咋(only this much) 做好咗(done something well)
+
+
+Finally, when terms are introduced from other countries(especially the US and the UK) to China, Cantonese and Mandarin often get different translations, where Cantonese often translates according to pronunciation of the terms in English and Mandarin often translates according to the meaning of the terms. Some examples are: (Cantonese vs Mandarin)
+
+ 的士(dik1 si2, has no direct meaning, translated according to the English pronunciation.) vs 出租車(chū zū chē, meaning cars for renting.), translated from Taxi.
+ 巴士(baa1 si2, has no direct meaning, translated according to the English pronunciation.) vs 公車(gōng chē, meaning public cars.), translated from Bus.
+ 多士(do1 si2, has no direct meaning, translated according to the English pronunciation.) vs 土司(tǔ sī, has no direct meaning, translated according to the English pronunciation.), translated from Toast.
+ 騷(sou1, has no direct meaning, translated according to the English pronunciation.) vs 秀(xìu, has no direct meaning, translated according to the English pronunciation), translated from Show.
+ 士多(si2 do1, has no direct meaning, translated according to the English pronunciation) vs 小店(xiǎo diàn, meaning small shop), translated from Store.
+ 𨋢(lip1, has no direct meaning, translated according to the English pronunciation) vs 升降機(shēng jiàng jī, meaning machine that elevates and lowers itself), translated from Lift/Elevator.
+ 掰拜(baai1 baai3, has no direct meaning, translated according to the English pronunciation) vs 再見(zài jiàn, meaning see you again), translated from Byebye/Goodbye.
+
+Japanese (日本語)
+
+ Katakana (カタカナ) and hiragana (ひらがな) characters mixed with kanji (漢字)
+ No spaces
+ Number system = Arabic Numerals (1,2,3 etc.)
+ Punctuation:
+ Period 。
+ Comma 、(,also used in double byte)
+ Quotation marks 「」
+ Occasional small characters beside large ones, eg. しゃ りゅ しょ って シャ リュ ショ ッテ
+ Double tick marks (known as daku-on) appearing at upper right of characters, eg. で が ず デ ガ ズ
+ Empty circles (known as handaku-on) appearing at upper right of characters, eg. ぱ ぴ パ ぴ
+ Frequent characters: の を は が
+ Originally written vertically(books, school, etc.) but mostly appears horizontal online.
+
+Korean (한국어/조선말)
+
+ Western-style punctuation marks
+ Western-style spacing
+ Hangul letters(phonetic) ex: ㅂ(b in book) ㅈ(j in jump) ㅅ(s in sock)ㅊ(ch in champion) ㅍ(p in pox)
+ Hangul letters used to form syllable blocks; e.g. ㅅ s + ㅓ o + ㅇ ng = 성 song
+ Circles and ellipses are commonplace in Hangul; are exceedingly rare in Chinese.
+ General appearance has relatively-uniform complexity, as contrasted with Chinese or Japanese.
+
+Khmer language ភាសារខ្មែរ
+
+Khmer is written using the distinctive Khmer alphabet.
+
+ rarely uses spaces
+ Letters have a distinctively "taller" shape than other Brahmic scripts.
+ Uses Khmer numerals in writing ១ ២ ៣ ៤ ៥ ៦ ៧ ៨ ៩.
+ Has smaller version of consonants placed below main consonants that may appear clustered
+ Has 24 diacritics denoting syllable rhymes - ា ិ ី ឹ ឺ ុ ូ ួ ើ ឿ ៀ េ ែ ៃ េា ៅ ុំ ំ ាំ ះ ុះ េះ ោះ
+ Uses this as a full stop: ។
+
+Greek (Ελληνικά)
+
+Modern Greek is written with Greek alphabet in monotonic, polytonic or atonic, either according to Demotic (Mr. Triantafilidis) grammar or Katharevousa grammar. Some people write in Greeklish (Greek with Latin script) which is either Visual-based, orthographic or phonetic or just messed-up (mixed). The only official orthographic forms of Greek language are Monotonic and Polytonic.
+Normal Modern Greek (Greek Monotonic)
+
+ words και, είναι;
+ Each multi-syllable word has one accent/tone mark (oxia): ά έ ή ί ό ύ ώ
+ The only other diacritic ever used is the tréma: ϊ/ΐ, ϋ/ΰ, etc.
+
+Pre-1980s Greek (Greek Polytonic)
+
+Katharevousa, Dimotiki (Triantafylidis' grammar)
+
+ Diacritics: ά, ᾶ, ἀ, ἁ, and combinations, also with other vowels.
+ Some texts, especially in Katharevousa, also have ὰ, ᾳ, in combination with other diacritics.
+
+Ancient Greek
+
+ Diacritics: ά, ὰ, ᾶ, ἀ, ἁ, ᾳ, and combinations, also with other vowels; ῥ; tilde (ᾶ) often appears more like a rounded circumflex
+ some texts feature lunate sigma (looks like c) instead of σ/ς
+
+Greek Atonic
+
+ Was common in some Greek media (television);
+ You will see Greek characters without accents/tones;
+ words: και, ειναι, αυτο.
+
+Greek in Greeklish
+
+ Automated conversion software for Greeklish->Greek conversion exists. If you notice a Greeklish text it may be useful for the Greek el.wikipedia (after conversion).
+ Keep in mind: in Greeklish more than one character may be used for one letter. (example: th for Θ (theta)).
+
+Orthographic Greeklish
+
+ words kai, einai.
+
+Phonetic Greeklish
+
+ words ke, ine;
+ omega appears as o;
+ ei, oi appear as i;
+ ai appears as e.
+
+Visual-based Greeklish
+
+ omega (Ω or ω) may appear as W or w;
+ epsilon (E) may appear as 3;
+ alpha (A) may appear as 4;
+ theta (Θ) may appear as 8;
+ upsilon (Y) may appear as \|/;
+ gamma (γ) may appear as y
+ More than one character may be used for one letter.
+
+Messed-up (Mixed) Greeklish
+
+ words kai, eine;
+ combines principles of phonetic, visual-based and orthographic Greeklish according to writer's idiosyncrasy;
+ The most commonly used form of Greeklish.
+
+Armenian (Հայերեն)
+
+Armenian can be recognized by its unique 39-letter alphabet:
+
+Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք ԵՎ(և) Օ Ֆ
+Georgian (ქართული)
+
+Georgian can be recognised by its unique alphabet (note some characters have fallen out of use).
+
+ა ბ გ დ ე ვ ზ ჱ თ ი კ ლ მ ნ ჲ ო პ ჟ რ ს ტ ჳ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჴ ჯ ჰ ჵ ჶ ჷ ჸ
+Cyrillic alphabet
+
+Bolding denotes letters unique to the language
+Slavic languages
+Belarusian (беларуская)
+
+ uses: ё, і, й, ў, ы, э, ’
+ features: шч used instead of щ
+ the only Cyrillic language not to feature и.
+
+Bulgarian (български)
+
+ uses: ъ, щ, я, ю, й
+ words: със, в
+ features: many words end in definite article –ът, –ят, –та, –то, –те
+
+Macedonian (македонски)
+
+ uses: ј, љ, њ, џ, ѓ, ќ, ѕ
+ words: во, со
+ features: р is usually found between consonants, for example првин
+
+Russian (русский)
+
+ uses: ё, й, ъ (rarely), ы, э, щ
+
+Serbian (српски)
+
+ uses: ј, љ, њ, џ, ђ, ћ
+ does not use: ъ, щ, я, ю, й
+ words: је, у
+ features: large consonant clusters, for example српски
+
+Ukrainian (українська)
+
+ uses: є, и, і, ї, й, ґ, є щ, ’
+ does not use: ъ, ё, ы, э
+
+Mongolian
+
+ uses: ө, ү
+ does not use: ё, й, к, щ, ъ, ы, ь, ю, я
+ used only in names or borrowed words: в, е, з, ф, ц
+
+Montenegrin
+
+ uses: З́, С́
+
+Ossetian
+
+ uses: ӕ
+
+Arabic alphabet
+
+ All languages using the Arabic alphabet are written right-to-left.
+ A number of other languages have been written in the Arabic alphabet in the past, but now are more commonly written in Latin characters; examples include Turkish, Somali and Swahili.
+
+Arabic (العربية)
+
+ backwards question mark: ؟
+ short vowels are not written, so many words are written with no vowel at all
+ common prefix: -الـ
+ common suffix: ـة-
+ words: إلى، من، على
+
+Persian (فارسی)
+
+Except in very rare case, verbs are at the end of a phrase.
+
+ common verbs: کرد، بود، شد، است، میشود
+ uses: پ، چ، ژ، گ
+ words: که، به
+
+Urdu (اردو)
+
+ uses: ٹ، ڈ، ڑ، ں، ے
+ many words ending in ے
+ words: اور، ہے
+ to distinguish from Arabic: in many texts, Urdu is written stylistically with words ‘slanting’ downwards from top-right to bottom-left (unlike the ‘linear’ style of Arabic, Persian etc.).
+
+Syriac Alphabet
+Syriac (ܐܬܘܪܝܐ)
+
+ short vowels are not usually written so many words are written with no vowel at all
+ three styles of writing (estrangela, serto, mahdnaya) and two different ways of representing vowels
+ basic alphabet in Estrangela style is: ܐ ܒ ܓ ܕ ܗ ܘ ܙ ܚ ܛ ܝ ܟ ܠ ܡ ܢ ܣ ܥ ܦ ܨ ܩ ܪ ܣ ܬ
+ basic alphabet in Serto style is: ܬ, ܫ, ܪ, ܩ, ܨ, ܦ, ܥ, ܣ, ܢ, ܡ, ܠ, ܟ, ܝ, ܛ, ܚ, ܙ, ܘ, ܗ, ܕ, ܓ, ܒ, ܐ
+ basic alphabet in Madnhaya style is: ܬ,ܫ,ܪ,ܩ,ܨ,ܦ,ܥ,ܣ,ܢ,ܡ,ܠ,ܟ,ܝ,ܛ,ܚ,ܙ,ܘ,ܗ, ܕ,ܓ,ܒ,ܐ
+
+Dravidian languages
+
+ All Dravidian languages are written from left to right.
+ All Dravidian languages have different scripts. But similarity can be found in their orthography.
+
+Kannada
+
+ Kannada has a 49 letter alphabet.
+
+Tamil
+
+ common word endings :ள்ளது, கிறது, கின்றன, ம்
+ common words: தமிழ், அவர், உள்ள, சில
+ Tamil has a unique 30-letter alphabet. With the help of diacritics, as many as 247 letters can be written.
+
+அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன
+Telugu
+
+Telugu has 56 characters (Aksharamulu) including vowels (Achchulu) and consonants (Hallulu). Telugu uses eighteen vowels, each of which has both an independent form and a diacritic form used with consonants to create syllables. The language makes a distinction between short and long vowels.
+
+అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ అం అః క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల ళ వ శ ష స హ
+
+౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯
+Bengali
+
+The Bengali alphabet or Bangla alphabet (Bengali: বাংলা বর্ণমালা, bangla bôrnômala) or Bengali script (Bengali: বাংলা লিপি, bangla lipi) is the writing system, originating in the Indian subcontinent, for the Bengali language and is the fifth most widely used writing system in the world. The script is used for other languages like Assamese, Maithili, Meithei and Bishnupriya Manipuri, and has historically been used to write Sanskrit within Bengal.
+Bengali
+
+Bengali has unique 50 letter Alphabet.
+
+ The Bengali script has a total of 9 vowel graphemes, each of which is called a স্বরবর্ণ swôrôbôrnô "vowel letter". The swôrôbôrnôs represent six of the seven main vowel sounds of Bengali, along with two vowel diphthongs. All of them are used in both Bengali and Assamese languages.
+
+অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ
+
+ The Bengali script has a total of 39 Consonants. Consonant letters are called ব্যঞ্জনবর্ণ bænjônbôrnô "consonant letter" in Bengali. The names of the letters are typically just the consonant sound plus the inherent vowel অ ô. Since the inherent vowel is assumed and not written, most letters' names look identical to the letter itself (the name of the letter ঘ is itself ghô, not gh).
+
+ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল শ ষ স হ ড় ঢ় য় ৎ ঃ ং ঁ
+
+ has 10 diacritics denoting syllable rhymes -
+
+া ি ী ু ূ ৃ ে ৈ ো ৌ
+Assamese
+
+ The Assamese script has a total of 9 vowel graphemes, each of which is called a স্বরবর্ণ swôrôbôrnô "vowel letter" too.
+
+অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ
+
+ has a total of 39 Consonants. Consonant letters are called ব্যঞ্জনবর্ণ bænjônbôrnô "consonant letter" in Bengali.
+
+ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য ৰ ল শ ষ স হ ড় ঢ় য় ৎ ঃ ং ঁ
+
+ has 10 diacritics denoting syllable rhymes -
+
+া ি ী ু ূ ৃ ে ৈ ো ৌ
+Canadian Aboriginal syllabics
+
+In modern writing, Canadian Aboriginal syllabics are indicative of Cree languages, Inuktitut, or Ojibwe, though the latter two are also written in alternative scripts. The basic glyph set is ᐁ ᐱ ᑌ ᑫ ᒉ ᒣ ᓀ ᓭ ᔦ, each of which may appear in any of four orientations, boldfaced, superscripted, and with diacritics including ᑊ ᐟ ᐠ ᐨ ᒼ ᐣ ᐢ ᐧ ᐤ ᐦ ᕽ ᓫ ᕑ. This abugida has also been used for Blackfoot.
+Other North American syllabics
+Cherokee
+
+Cherokee writing features a unique syllabary consisting of the following characters:
+
+ᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴ.
+Artificial languages
+Esperanto (Esperanto)
+
+ words: de, la, al, kaj
+ Six accented letters: ĉ Ĉ ĝ Ĝ ĥ Ĥ ĵ Ĵ ŝ Ŝ ŭ Ŭ, their corresponding H-system representation ch Ch gh Gh hh Hh jh Jh sh Sh u U or their corresponding X-system representation cx Cx gx Gx hx Hx jx Jx sx Sx ux Ux
+ words ending in o, a, oj, aj, on, an, ojn, ajn, as, os, is, us, u, i, aŭ
+
+Klingon (tlhIngan Hol)
+
+ When written in the Latin alphabet Klingon has the unusual property of a distinction in case; q and Q are different letters, and other letters are either always (e.g. D, I, S) or never (e.g. ch, tlh, v) written in upper case. This causes a large number of words that look quite strange to people who aren't used to it, for example: yIDoghQo', tlhIngan Hol (with mixed case).
+ The apostrophe is fairly frequent, especially at the end of a word or syllable.
+ Common suffixes: -be', -'a'
+ Common words: 'oH, Qapla'
+ May use one or more apostrophes in the middle of a word: SuvwI″a'
+
+Lojban (lojban.)
+
+ (almost) all lowercase;
+ common words lo, mi, cu, la, nu, do, na, se;
+ paragraphs delimited with ni'o and sentences delimited with .i (or i);
+ many five-letter words in consonant-vowel shape CCVCV or CVCCV;
+ many short words with apostrophes between vowels, like ko'a pi'o etc.;
+ usually no punctuation except for dots;
+ may use commas in the middle of words (typically proper nouns).
+
+Toki Pona (toki pona)
+
+ alphabet is all lowercase except loanwords
+ no diacritics
+ only uses unvoiced consonants in writing, e.g. p, t, k
+
+Full alphabet: p, t, k, s, m, n, l, j, w, a, e, i, o, u
+
+ common words li, mi, e, sina, ona, jan
+ often sounds like a simplified and phonetic form of English or Swedish
+ many two-syllable words
+
+
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´¬±‗¾¶§÷¸°¨•¹³²■
+
+㧟㩳㭎㳠䁖䄍䌷䓖䘯䜣䜩䝼䞍䥇䥺䦂䦃䦆䦛䦟䦶䲟䲠䲡䲣䴓䴔䴕䴖䴗䴘䴙䶮一丁七万丈三上下不与丐丑专且丕世丘丙业丛东丝丞丢两严丧丨个丫中丰串临丶丸丹为主丽举丿乃久乇么义之乌乍乎乏乐乒乓乔乖乘乙乜九乞也习乡书乩买乱乳乾亅了予争事二于亏云互亓五井亘亚些亟亠亡亢交亥亦产亨亩享京亭亮亲亳亵人亿什仁仂仃仄仅仆仇仉今介仍从仑仓仔仕他仗付仙仝仞仟仡代令以仨仪仫们仰仲仳仵件价任份仿企伉伊伍伎伏伐休众优伙会伛伞伟传伢伤伥伦伧伪伫伯估伲伴伶伸伺似伽佃但位低住佐佑体何佗佘余佚佛作佝佞佟你佣佤佥佧佩佬佯佰佳佴佶佻佼佾使侃侄侈侉例侍侏侑侔侗供依侠侣侥侦侧侨侩侪侬侮侯侵便促俄俅俊俎俏俐俑俗俘俚俜保俞俟信俣俦俨俩俪俭修俯俱俳俸俺俾倌倍倏倒倔倘候倚倜借倡倥倦倨倩倪倬倭倮倳债值倾偃假偈偌偎偏偕做停健偬偶偷偻偾偿傀傅傈傍傣傥傧储傩催傲傺傻像僖僚僦僧僬僭僮僳僵僻儆儇儋儒儡儿兀允元兄充兆先光克免兑兔兕兖党兜兢入全八公六兮兰共关兴兵其具典兹养兼兽冀冁冂内冈冉册再冒冕冖冗写军农冠冢冤冥冫冬冯冰冱冲决况冶冷冻冼冽净凄准凇凉凋凌减凑凛凝几凡凤凫凭凯凰凳凵凶凸凹出击凼函凿刀刁刃分切刈刊刍刎刑划刖列刘则刚创初删判刨利别刭刮到刳制刷券刹刺刻刽刿剀剁剂剃削剌前剐剑剔剖剜剞剡剥剧剩剪副割剽剿劁劂劈劐劓力劝办功加务劢劣动助努劫劬劭励劲劳劾势勃勇勉勋勐勒勖勘募勤勰勹勺勾勿匀包匆匈匍匏匐匕化北匙匚匝匠匡匣匦匪匮匸匹区医匾匿十千卅升午卉半华协卑卒卓单卖南博卜卞卟占卡卢卣卤卦卧卩卫卮卯印危即却卵卷卸卺卿厂厄厅历厉压厌厍厕厘厚厝原厢厣厥厦厨厩厮厶去县叁参又叉及友双反发叔取受变叙叛叟叠口古句另叨叩只叫召叭叮可台叱史右叵叶号司叹叻叼叽吁吃各吆合吉吊同名后吏吐向吒吓吕吖吗君吝吞吟吠吡吣否吧吨吩含听吭吮启吱吲吴吵吸吹吻吼吾呀呃呆呈告呋呐呒呓呔呕呖呗员呙呛呜呢呤呦周呱呲味呵呶呷呸呻呼命咀咂咄咆咋和咎咏咐咒咔咕咖咙咚咛咝咣咤咦咧咨咩咪咫咬咭咯咱咳咴咸咻咽咿哀品哂哄哆哇哈哉哌响哎哏哐哑哒哓哔哕哗哙哚哜哝哞哟哥哦哧哨哩哪哭哮哲哳哺哼哽哿唁唆唇唉唏唐唑唔唛唠唢唣唤唧唪唬售唯唰唱唳唷唼唾唿啁啃啄商啉啊啐啕啖啜啡啤啥啦啧啪啬啭啮啵啶啷啸啻啼啾喀喁喂喃善喇喈喉喊喋喏喑喔喘喙喜喝喟喧喱喳喵喷喹喻喽喾嗄嗅嗉嗌嗍嗑嗒嗓嗔嗖嗜嗝嗟嗡嗣嗤嗥嗦嗨嗪嗫嗬嗯嗲嗳嗵嗷嗽嗾嘀嘁嘈嘉嘌嘎嘏嘘嘛嘞嘟嘣嘤嘧嘬嘭嘱嘲嘴嘶嘹嘻嘿噌噍噎噔噗噘噙噜噢噤器噩噪噫噬噱���噻噼嚅嚆嚎嚏嚓嚣嚯嚷嚼囊囔囗囚四囝回囟因囡团囤囫园困囱围囵囹固国图囿圃圄圆圈圉圊圜土圣在圩圪圬圭圮圯地圳圹场圻圾址坂均坊坌坍坎坏坐坑块坚坛坜坝坞坟坠坡坤坦坨坩坪坫坭坯坳坶坷坻坼垂垃垄垅垆型垌垒垓垛垠垡垢垣垤垦垧垩垫垭垮垲垴垸埂埃埋城埏埒埔埕埘埙埚埝域埠埤埭埯埴埸培基埽堀堂堆堇堊堋堍堑堕堙堞堠堡堤堪堰堵塄塌塍塑塔塘塞塥塩填塬塾墀墁境墅墉墒墓墙墚增墟墨墩墼壁壅壑壕壤士壬壮声壳壶壹夂处备夊复夏夔夕外夙多夜够夤夥大天太夫夭央夯失头夷夸夹夺夼奁奂奄奇奈奉奋奎奏契奔奕奖套奘奚奠奢奥女奴奶奸她好妁如妃妄妆妇妈妊妍妒妓妖妗妙妞妣妤妥妨妩妪妫妮妯妲妹妻妾姆姊始姐姑姒姓委姗姘姚姜姝姣姥姨姬姹姻姿威娃娄娅娆娇娈娉娌娑娓娘娜娟娠娣娥娩娱娲娴娶娼婀婆婉婊婕婚婢婧婪婴婵婶婷婺婿媒媚媛媪媲媳媵媸媾嫁嫂嫉嫌嫒嫔嫖嫘嫜嫠嫡嫣嫦嫩嫫嫱嬉嬖嬗嬲嬴嬷孀子孑孓孔孕字存孙孚孛孜孝孟孢季孤孥学孩孪孬孰孱孳孵孺孽宀宁它宄宅宇守安宋完宏宓宕宗官宙定宛宜宝实宠审客宣室宥宦宪宫宰害宴宵家宸容宽宾宿寂寄寅密寇富寐寒寓寝寞察寡寤寥寨寮寰寸对寺寻导寿封射将尉尊小少尔尕尖尘尚尜尝尢尤尥尧尬就尴尸尹尺尻尼尽尾尿局屁层居屈屉届屋屎屏屐屑展屙属屠屡屣履屦屮屯山屹屺屿岁岂岈岌岍岐岑岔岖岗岘岙岚岛岜岢岣岩岫岬岭岱岳岵岷岸岽岿峁峄峋峒峙峡峤峥峦峨峪峭峰峻崂崃崆崇崎崔崖崛崞崤崦崧崩崭崮崴崽崾嵇嵊嵋嵌嵘嵛嵝嵩嵫嵬嵯嵴嶂嶙嶝嶷嶼巅巍巛川州巡巢工左巧巨巩巫差巯己已巳巴巷巽巾币市布帅帆师希帏帐帑帔帕帖帘帙帚帛帜帝带帧席帮帱帷常帻帼帽幂幄幅幌幔幕幛幞幡幢干平年并幸幺幻幼幽广庀庄庆庇床庋序庐庑库应底庖店庙庚府庞废庠庥度座庭庳庵庶康庸庹庾廉廊廑廒廓廖廛廨廪廴延廷建廾廿开弁异弃弄弈弊弋式弑弓引弗弘弛弟张弥弦弧弩弭弯弱弹强弼彀彐归当录彖彗彘彝彡形彤彦彩彪彬彭彰影彳彷役彻彼往征徂径待徇很徉徊律後徐徒徕得徘徙徜御徨循徭微徵德徼徽心必忆忉忌忍忏忐忑忒忖志忘忙忝忠忡忤忧忪快忭忮忱念忸忻忽忾忿怀态怂怃怄怅怆怊怍怎怏怒怔怕怖怙怛怜思怠怡急怦性怨怩怪怫怯怵总怼怿恁恂恃恋恍恐恒恕恙恚恝恢恣恤恧恨恩恪恫恬恭息恰恳恶恸恹恺恻恼恽恿悃悄悉悌悍悒悔悖悚悛悝悟悠患悦您悫悬悭悯悱悲悴悸悻悼情惆惊惋惑惕惘惚惜惝惟惠惦惧惨惩惫惬惭惮惯惰想惴惶惹惺愀愁愆愈愉愍愎意愕愚感愠愣愤愦愧愫愿慈慊慌慎慑慕慝慢慧慨慰慵慷憋憎憔憝憧憨憩憬憷憾懂懈懊懋懑懒懔懦懵懿戆戈戊戋戌戍戎戏成我戒戕或戗战戚戛戟戡戢戤戥截戬戮戳戴戶户戽戾房所扁扃扇扈扉手才扎扑扒打扔托扛扣扦执扩扪扫扬扭扮扯扰扳扶批扼找承技抄抉把抑抒抓投抖抗折抚抛抟抠抡抢护报抨披抬抱抵抹抻押抽抿拂拄担拆拇拈拉拊拌拍拎拐拒拓拔拖拗拘拙拚招拜拟拢拣拥拦拧拨择括拭拮拯拱拳拴拶拷拼拽拾拿持挂指挈按挎挑挖挚挛挝挞挟挠挡挢挣挤挥挨挪挫振挲挹挺挽捂捃捅捆捉捋捌捍捎捏捐捕捞损捡换捣捧捩捭据捱捶捷捺捻掀掂掇授掉掊掌掎掏掐排掖掘掠探掣接控推掩措掬掭掮掰掳掴掷掸掺掼掾揄揆揉揍揎描提插揖揞揠握揣揩揪揭揲援揶揸揽揿搀搁搂搅搋搌搏搐搓搔搛搜搞搠搡搦搪搬搭搴携搽搿摁摄摅摆摇摈摊摒摔摘摞摧摩摭摸摹摺撂撄撅撇撑撒撕撙撞撤撩撬播撮撰撵撷撸撺撼擀擂擅操擎擐擒擓擗擘擞擢擤擦攀攉攒攘攥攫攮支攴攵收攸改攻放政故效敉敌敏救敕敖教敛敝敞敢散敦敫敬数敲整敷文斋斌斐斑斓斗料斛斜斟斡斤斥斧斩斫断斯新方於施旁旃旄旅旆旋旌旎族旒旖旗无既日旦旧旨早旬旭旮旯旰旱时旷旺昀昂昃昆昊昌明昏易昔昕昙昝星映春昧昨昭是昱昴昵昶昼显晁晃晋晌晏晒晓晔晕晖晗晚晟晡晤晦晨普景晰晴晶晷智晾暂暄暇暌暑暖暗暝暧暨暮暴暹暾曙曛曜曝曦曩曰曲曳更曷曹曼曾替最月有朊朋服朐朔朕朗望朝期朦木未末本札术朱朴朵机朽杀杂权杆杈杉杌李杏材村杓杖杜杞束杠条来杨杩杪杭杯杰杲杳杵杷杼松板极构枇枉枋析枕林枘枚果枝枞枢枣枥枧枨枪枫枭枯枰枳枵架枷枸柁柃柄柏某柑柒染柔柘柙柚柜柝柞柠柢查柩柬柯柰柱柳柴柽柿栀栅标栈栉栊栋栌栎栏树栓栖栗栝校栩株栲栳样核根格栽栾桀桁桂桃桄桅框案桉桌桎桐桑桓桔桕桠桡桢档桤桥桦桧桨桩桫桴桶桷梁梃梅梆梏梓梗梢梦梧梨梭梯械梳梵检棂棉棋棍棒棕棘棚棠棡棣森棰棱棵棹棺棼椁椅椋植椎椐椒椟椠椤椭椰椴椹椽椿楂楔楗楚楝楞楠楣楦楫楮楱楷楸楹楼榀概榄榆榇榈榉榍榔榕榘榛榜榧榨榫榭榱榴榷榻槁槊槌槎槐槔槛槟槠槭槲槽槿樊樗樘樟模樨横樯樱樵樽樾橄橇橐橘橙橛橡橥橱橹橼檀檄檎檐檑檗檠檩檫檬欠次欢欣欤欧欲欷欹欺款歃歆歇歉歌歙止正此步武歧歪歹死歼殁殂殃殄殆殇殉殊残殍殒殓殖殚殛殡殪殳殴段殷殿毁毂毅毋母每毒毓比毕毖毗毙毛毡毫毯毳毵毹毽氅氆氇氍氏氐民氓气氕氖氘氙氚氛氟氡氢氤氦氧氨氩氪氮氯氰氲水永氽汀汁求汆汇汉汊汐汔汕汗汛汜汝汞江池污汤汨汩汪汰汲汴汶汹汽汾沁沂沃沅沆沈沉沌沏沐沓沔沙沛沟没沣沤沥沦沧沩沪沫沭沮沱沲河沸油治沼沽沾沿泄泅泉泊泌泐泓泔法泖泗泛泞泠泡波泣泥注泪泫泮泯泰泱泳泵泶泷泸泺泻泼泽泾洁洄洇洋洌洎洒洗洙洚洛洞津洧洪洫洮洱洲洳洵洹活洼洽派流浃浅浆浇浊测浍济浏浑浒浓浔浙浚浜浞浠浣浦浩浪浮浯浴海浸浼涂涅消涉涌涎涑涓涔涕涛涝涞涟涠涡涣涤润涧涨涩涪涫涮涯液涵涸涿淀淄淅淆淇淋淌淑淖淘淙淝淞淠淡淤淦淫淬淮深淳混淹添淼清渊渌渍渎渐渑渔渖渗渚渝渠渡渣渤渥温渫渭港渲渴游渺湃湄湍湎湓湔湖湘湛湟湫湮湾湿溃溅溆溉溏源溘溜溟溢溥溧溪溯溱溲溴溶溷溺溻溽滁滂滇滋滏滑滓滔滕滗滚滞滟滠满滢滤滥滦滨滩滴滹漂漆漉漏漓演漕漠漤漩漪漫漭漯漱漳漶漾潆潇潋潍潘潜潞潢潦潭潮潲潴潸潺潼澄澈澉澌澍澎澜澡澧澳澶澹澾激濂濉濑濒濞濠濡濮濯瀑瀚瀛瀣瀹灌灏灞火灭灯灰灵灶灸灼灾灿炀炅炉炊炎炒炔炕炖炙炜炝炫炬炭炮炯炱炳炷炸点炻炼炽烀烁烂烃烈烊烘烙烛烟烤烦烧烨烩烫烬热烯烷烹烽焉焊焐焓焕焖焘焙焚焦焯焰焱然煅煊煌煎煙煜煞煤煦照煨煮煲煳煸煺煽熄熊熏熔熘熙熟熠熨熬熳熵熹燃燎燔燕燠燥燧燮燹爆爝爨爪爬爰爱爵父爷爸爹爻爽爿片版牌牍牒牖牙牛牝牟牡牢牦牧物牯牲牵特牺牾牿犀犁犄犊犋犍犏犒犟犬犯犰犴状犷犸犹狁狂狃狄狈狍狎狐狒狗狙狞狠狡狨狩独狭狮狯狰狱狲狳狴狷狸狺狻狼猁猃猊猎猓猕猖猗猛猜猝猞猡猢猥猩猪猫猬献猱猴猷猸猹猾猿獍獐獒獗獠獬獭獯獾玄率玉王玎玑玖玛玟玢玩玫玮环现玲玳玷玺玻珀珂珈珉珊珍珏珐珑珙珞珠珥珧珩班珲球琅理琉琊琏琐琚琛琢琥琦琨琪琬琮琰琳琴琵琶琼瑁瑕瑗瑙瑚瑛瑜瑞瑟瑭瑰瑶瑷瑾璀璁璃璇璋璎璐璜璞璧璨璩璺瓒瓜瓞瓠瓢瓣瓤瓦瓮瓯瓴瓶瓷瓿甄甍甏甑甓甘甙甚甜生甥用甩甫甬甭甯田由甲申电男甸町画甾畀畅畈畋界畎畏畔留畚畛畜畝略畦番畲畴畸畹畿疃疆疋疏疑疒疔疖疗疙疚疝疟疠疡疣疤疥疫疬疮疯疰疱疲疳疴疵疸疹疼疽疾痂痃痄病症痈痉痊痍痒痔痕痖痘痛痞痢痣痤痦痧痨痪痫痰痱痴痹痼痿瘀瘁瘅瘊瘌瘐瘕瘗瘘瘙瘛瘟瘠瘢瘤瘥瘦瘩瘪瘫瘰瘳瘴瘵瘸瘼瘾瘿癀癃癌癍癔癖癜癞癣癫癯癶癸登白百皂的皆皇皈皋皎皑皓皖皙皤皮皱皲皴皿盂盅盆盇盈盉益盌盍盎盏盐监盒盓盔盕盖盗盘盛盜盝盞盟盠盡盢監盤盥盦盨盩盪盫盬目盯盱盲盳直相盹盻盼盽盾盿眀省眃眄眅眆眇眈眉眊看県眍眎眏眕眖眘眙眚眜眞真眠眢眣眥眦眨眩眫眬眭眮眯眰眲眳眵眶眷眸眹眺眼眾着睁睃睄睅睆睇睉睊睋睍睎睏睐睑睒睕睖睘睙睚睛睞睠睡睢督睥睦睧睨睩睪睫睬睱睴睹睺睻睽睾睿瞀瞂瞄瞅瞆瞇瞋瞌瞍瞎瞏瞐瞑瞒瞓瞕瞜瞞瞟瞠瞡瞢瞣瞥瞧瞩瞪瞫瞬瞭瞰瞳瞵瞷瞻瞼瞽瞿矀矂矃矄矅矇矊矍矎矒矔矗矘矙矚矛矜矝矞矟矡矢矣知矧矩矫矬短矮矯矰石矵矶矸矺矻矽矾矿砀码砂砉砌砍砏砑砒研砖砗砘砚砛砜砝砟砢砣砤砥砦砧砩砪砫砬砭砮砰砲破砷砸砹砺砻砼砾础硁硂硃硄硅硇硈硊硌硎硏硐硒硕硖硗硙硚硝硟硣硪硫硬硭确硱硷硼硽碀碁碃碅碇碉碌碍碎碑碒碓碔碕碗碘碚碛碜碟碠碡碣碥碦碧碩碭碰碱碲碳碴碵碶碸確碻碼碽碾磁磃磄磅磈磉磊磋磐磑磔磕磙磚磜磞磠磡磣磥磦磨磩磪磫磬磭磯磲磳磴磷磸磹磺磻磽磾磿礀礁礂礄礅礇礈礉礊礋礌礎礐礑礒礓礘礙礜礞礡礤礦礨礮礱礴示礼礽社礿祀祁祂祃祅祆祇祈祉祋祎祏祐祓祔祕祖祗祘祙祚祛祜祝神祟祠祢祤祥祦祧票祩祪祫祭祮祯祰祲祳祶祷祸祹祺祻祼祾祿禀禁禃禄禅禆禇禊禋禌禍禎福禐禑禔禖禗禘禛禜禞禠禡禢禣禤禥禦禧禨禩禪禫禬禭禮禰禱禳禵禸禹禺离禽禾禿秀私秃秅秆秉秋秌种科秒秔秕秘秙租秠秢秣秤秦秧秩秫秬秭积称秱秲秳秵秶秸秹秺移秼秽秾稀稂稃稄稅稆稇稈程稌稍税稑稓稔稖稗稘稙稚稛稜稞稟稠稡稣稧稬稭種稱稲稳稴稷稸稹稻稼稽稿穀穃穄穆穈穉穊積穐穑穗穙穛穜穟穢穩穪穫穯穰穱穴穵究穷穸穹空穻穽穿窀突窃窄窅窆窇窈窊窋窌窍窎窑窒窔窕窖窗窘窜窝窟窠窣窤窥窦窨窩窪窫窬窭窮窯窳窸窼窾窿竂竄竅竇竈立竌竏竑竒竖站竚竝竞竟章竢竣竤童竦竭端競竷竸竹竺��竾竿笀笃笄笆笇笈笉笊笋笍笎笏笐笑笔笕笖笗笙笛笜笞笟笠笣笤笥符笧笨笪笫第笭笮笰笱笲笳笸笹笺笼笾笿筂筅筆筇筈等筊筋筌筍筏筐筑筒答策筘筚筛筝筠筢筣筥筦筩筭筮筰筱筲筴筵筶筷筸筹筻筼筽签简箅箇箋箍箏箐箒箓箔箕箖算箘箛箜箝箞箠管箢箣箤箥箦箧箨箩箪箫箬箭箯箱箴箷箸箹箽箾箿節篁篂篃範篆篇築篌篑篓篙篚篛篜篝篟篠篡篤篥篦篨篩篪篬篭篮篯篰篱篲篳篴篷篸篺篼篾簃簇簋簌簍簏簑簕簘簜簞簟簠簡簢簤簥簦簧簨簪簫簬簯簰簳簴簷簸簹簺簻簼簽簾簿籀籁籂籄籆籇籋籌籍籐籒籓籔籙籜籞籠籣籤籥籬籲米籴籶类籼籽粃粉粊粋粌粍粎粏粐粑粒粓粔粕粖粗粘粚粛粜粝粞粟粡粢粣粤粥粦粧粩粪粫粭粮粯粱粲粳粴粵粶粷粸粹粺粻粼粽精粿糀糁糂糅糇糈糉糊糌糍糓糕糖糗糙糜糞糟糠糢糦糧糨糮糯糰糱糴糵糷糸糺系紀紂紃約紅紇紊紋納紏紐紓純紖紗紘紙級紛紝素索紣紤紧紩紫紬紭紮累細紳紵紹紺紻紾絁終絃組絅絆絍絏結絒絓絕絙絛絜絞絟絡絣給絨絪絫絭絮統絲絳絶絷絹絺絼絽絾絿綀綂綄綅綈綊綍綎綏綑綒經綔綖綗綜綝綟綠綡綦維綮綱網綴綵綶綹綼綿緄緅緊緋緌緍緐緒緗線緛緜緝緞締緡緣緤緦編緩緯緰緱緲練緵緶緷緹緺緻緼縀縁縂縆縈縋縕縚縛縜縞縠縡縢縣縧縩縪縫縮縯縱縷縹縻縼總績縿繀繁繂繃繆繇繉繋繌繐繑繒織繕繖繙繚繜繝繞繟繣繤繧繨繩繫繬繯繳繴繸繺繻繼繿纀纁纂纃纄纉續纍纏纑纒纔纕纖纗纘纛纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵缶缷缸缺缻缽缾罁罂罃罄罅罆罇罈罋罍罐网罔罕罗罘罙罚罝罟罡罢罣罥罨罩罪置罯罰罱署罴罵罶罷罹罼罽罾羀羁羅羇羈羉羊羌美羑羔羕羗羙羚羜羝羞羟羠羡羣群羧義羭羮羯羰羲羴羵羶羷羸羹羺羼羽羿翀翁翂翃翅翆翈翉翊翌翎翐翑習翔翕翖翘翙翚翛翜翟翠翡翢翣翥翦翧翩翫翬翭翮翯翰翱翳翸翹翻翼耀老考耄者耆耇耈耊耋而耍耎耐耑耒耕耖耗耘耙耜耡耢耥耦耧耨耩耪耮耰耱耳耴耵耶耷耸耻耽耿聂聃聆聊聋职聍聒联聖聘聚聛聜聝聞聟聠聡聣聦聧聩聪聫聬聭聯聰聱聲聴聵聶職聸聹聺聻聽聾聿肀肃肄肅肆肇肉肊肋肌肍肏肓肖肘肙肚肛肜肝肞肟肠股肢肣肤肥肧肩肪肫肭肮肯肰肱育肴肷肸肺肻肼肽肾肿胀胁胂胃胄胆胊背胍胎胑胔胖胗胙胚胛胜胝胞胠胡胤胥胧胨胩胪胫胬胭胯胰胱胲胳胴胵胶胸胹胺胼能胾脂脅脆脈脉脊脍脎脏脐脑脒脓脔脕脖脗脘脙脚脛脜脝脞脟脣脦脧脨脩脫脬脭脮脯脰脱脲脳脵脶脷脸脹脺脻脼脽脾脿腀腂腃腄腆腈腊腋腌腎腐腑腓腔腕腗腘腙腚腠腣腥腦腧腨腩腪腫腬腭腮腰腱腳腴腵腸腹腺腻腼腽腾腿膀膂膄膆膈膊膋膏膑膕膗膘膚膛膜膝膟膠膥膦膨膩膪膫膬膭膮膯膰膱膲膳膴膵膶膹膺膻膼膽膿臀臁臂臃臄臅臆臇臈臉臊臋臌臍臎臏臐臑臒臓臕臖臗臘臚臛臜臞臟臢臣臥臧臨自臬臭臮臯至致臶臺臻臼臾臿舀舁舂舃舄舅舆與興舉舊舋舌舍舐舒舔舖舛舜舞舟舡舢舣舦舨航舫般舭舯舰舱舲舳舴舵舶舷舸船舻舾艁艂艄艆艇艈艉艊艋艍艎艏艐艑艒艕艖艘艙艚艜艞艟艢艣艤艦艧艨艩艫艭艮良艰色艳艴艶艷艸艺艼艽艾艿节芃芄芈芊芋芍芎芏芑芒芖芗芘芙芜芝芟芡芤芥芦芨芩芪芫芬芭芮芯芰花芳芴芵芷芸芹芻芼芽芾苁苃苄苅苇苈苊苋苌苍苎苏苑苒苓苔苕苗苘苙苛苜苞苟苠苡苣苤若苦苧苫苯英苲苴苶苷苹苻苼苽苾苿茀茁茂范茄茅茆茇茈茉茊茌茍茎茏茐茑茔茕茖茗茚茛茜茝茞茢茣茧茨茫茬茭茯茱茲茴茵茶茷茸茹茺茻茼茽茿荀荃荄荅荆荇荈草荊荏荐荑荒荔荖荘荙荚荛荜荞荟荠荡荢荣荤荥荦荧荨荩荪荫荬荭荮药荳荷荸荻荼荽莁莂莅莆莉莊莎莒莓莕莖莘莙莚莛莜莞莠莢莤莨莩莪莫莱莲莳莴莵莶获莸莹莺莻莼莽莾莿菀菁菂菃菄菅菆菇菉菊菌菍菏菐菑菒菓菔菕菖菘菙菚菜菝菞菟菠菡菢菣菥菦菧菨菩菪菫菬菭華菰菱菲菳菴菵菸菹菽萁萃萄萆萈萊萋萌萍萎萏萑萗萘萚萜萝萢萤营萦萧萨萩萬萱萵萸萼落葆葇葉葋葌葍葎葏葑葔葖著葘葙葚葛葜葞葟葠葡葢董葦葨葩葫葬葭葮葯葰葱葲葳葴葵葶葷葸葹葺葻葾蒁蒂蒃蒄蒇蒈蒉蒋蒌蒐蒑蒕蒗蒘蒙蒜蒞蒟蒡蒧蒨蒪蒭蒯蒲蒴蒷蒸蒹蒺蒻蒼蒽蒾蒿蓁蓂蓃蓄蓆蓇蓉蓊蓋蓍蓏蓐蓑蓓蓔蓕蓖蓗蓙蓚蓛蓝蓞蓟蓠蓡蓣蓥蓦蓧蓨蓬蓮蓯蓰蓱蓳蓴蓵蓷蓸蓺蓼蓾蓿蔀蔁蔂蔄蔊蔌蔎蔑蔓蔔蔗蔘蔙蔚蔞蔟蔡蔣蔥蔦蔫蔬蔯蔱蔲���蔷蔸蔺蔻蔼蔽蔿蕁蕂蕃蕅蕈蕉蕊蕋蕌蕒蕖蕗蕘蕙蕚蕛蕜蕝蕞蕟蕡蕣蕤蕦蕧蕨蕰蕲蕳蕴蕵蕷蕹蕺蕻蕼蕾蕿薀薂薃薄薅薆薇薋薏薐薑薔薖薗薙薛薜薝薠薢薤薦薨薪薭薮薯薰薳薷薹薾薿藀藁藇藉藍藏藐藑藓藕藖藗藘藙藚藛藜藝藞藠藢藣藤藥藦藧藨藩藫藬藭藮藯藰藳藴藵藶藷藺藻藿蘁蘂蘅蘆蘇蘋蘌蘑蘓蘔蘖蘘蘧蘩蘪蘭蘸蘼蘿虀虃虈虋虍虎虏虐虑虒虔處虖虗虘虙虚虛虜虝虞號虡虢虧虫虬虮虯虰虱虲虵虹虺虻虼虽虾虿蚀蚁蚂蚈蚊蚋蚌蚍蚑蚒蚓蚕蚖蚘蚜蚝蚡蚢蚣蚤蚧蚨蚩蚪蚬蚯蚰蚱蚴蚵蚶蚺蚾蚿蛀蛄蛆蛇蛉蛊蛋蛎蛏蛐蛑蛔蛖蛘蛙蛚蛛蛜蛞蛟蛡蛢蛣蛤蛥蛩蛬蛭蛮蛯蛰蛱蛲蛳蛴蛶蛷蛸蛹蛻蛾蜀蜁蜂蜃蜆蜇蜈蜉蜊蜌蜍蜎蜏蜐蜑蜒蜓蜔蜕蜗蜘蜚蜜蜞蜠蜡蜢蜣蜥蜨蜩蜪蜫蜮蜱蜴蜷蜸蜺蜻蜼蜽蜾蜿蝀蝄蝇蝈蝉蝌蝍蝎蝑蝓蝕蝗蝘蝙蝝蝟蝠蝣蝤蝥蝦蝨蝮蝰蝴蝶蝸蝹蝺蝻蝼蝽蝾蝿螀螁螂螃螅螈螋融螐螑螓螕螖螗螘螚螝螞螟螠螡螢螣螤螥螦螧螨螫螬螭螯螳螵螺螽蟀蟂蟅蟆蟊蟋蟑蟒蟓蟛蟜蟝蟠蟢蟥蟧蟨蟪蟫蟬蟭蟮蟯蟲蟳蟹蟻蟼蟾蟿蠃蠄蠅蠆蠈蠊蠋蠌蠍蠎蠏蠒蠓蠔蠕蠖蠗蠙蠚蠛蠜蠝蠟蠡蠢蠣蠥蠩蠪蠭蠲蠶蠷蠹蠻蠼蠾血衂衄衅衋行衍衒術衔衕衖街衘衙衛衝衟衡衢衣补表衩衫衬衮衰衲衷衸衹衼衽衾衿袀袁袂袃袄袅袆袇袈袉袊袋袌袍袐袑袒袓袔袕袖袗袘袚袛袜袝袞袟袠袢袣袤袥袦袧袨袩袪被袬袭袱袴袵袷袼袽袿裀裁裂装裆裈裉裋裎裏裒裓裔裕裘裙裛補裝裟裡裢裣裤裥裨裩裯裰裱裲裳裴裶裸裹裺裼製裾褂複褊褋褌褎褏褐褑褒褓褔褙褚褛褜褠褡褣褥褦褧褨褪褫褯褰褱褲褴褵褶褸褹襁襄襆襌襍襕襖襘襛襞襟襢襤襦襪襫襬襱襲襶襻襽襾西要覂覃覅覆覇覈覊見覍規覐覓視覗覙覚覛覟覠覥覩親覯覵覺觀见观规觅视觇览觉觊觋觌觍觎觏觐觑角觓觔觖觚觜觝觞解觥触觫觭觯觱觳觸觼觽觿言訂訃訄訅訆訇計訉訊訋訌討訏訐訑訒訓訔訕託記訙訚訛訜訝訞訟訡訢訣訪設訮許訴訹診註証訽訾詀詄詅詇詈詐詒評詖詗詛詝詞詟詠詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詵詷詸詹詺詻詼詾詿誇誉誊誌認誓誕誖誘語誠誡誤誥說説誰課誳誴誻誽誾調諂諄諆談諈諉請諏諑諒諓論諘諛諝諠諡諥諦諧諮諱諸諹諺謀謂謄謇謏謚講謝謟謠謡謥謦謧謨謩謪謬謱謴謸謹謺謽謿譁譃譄譅證譌譓譔譗識譜譞譟譢警譫譬譯議護譸譻譽讀讈讉變讌讍讏讓讕讙讚讛讜讝讞讟计订讣认讥讦讧讨让讪讫讬训议讯记讱讲讳讴讵讶讷许讹论讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谉谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷谻谼谽谿豀豁豂豆豇豈豉豊豌豎豐豕豗豚豠象豢豧豨豪豫豬豭豰豳豵豷豸豹豺貂貅貉貊貋貌貍貎貏貐貑貒貓貔貗貘貙貛貝貞負財貢貣貤貦貧貨販貪貫責貮貯貲貴買貸費貼貽貿賀賁賂賄賅資賈賊賓賚賜賞賡賢賣賦賨質賮賯賰賱賲賳賴賷賸賹賺購贀贁贂贄贅贆贇贈贉贊贋贌贏贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赤赦赧赪赫赭走赲赳赴赵赶起赹赽趁趄超越趋趌趑趔趕趙趝趟趡趣趤趥趦趧趨趩趪趬趮趯趰趱足趴趵趶趷趸趹趺趼趽趾趿跁跂跃跄跅跆跈跉跊跋跌跍跎跏跐跑跒跓跔跖跗跘跚跛距跞跟跡跣跤跨跪跫跬路跰跱跳践跶跷跸跹跺跻跼跽跾踀踃踄踅踆踉踊踌踏踐踔踖踘踝踞踟踡踢踣踥踦踧踨踩踪踫踬踮踯踰踱踴踵踸踹踺踽蹀蹁蹂蹄蹅蹆蹇蹈蹉蹊蹋蹌蹎蹐蹑蹒蹓蹔蹖蹙蹚蹞蹟蹠蹡蹣蹤蹦蹧蹨蹩蹬蹭蹯蹰蹱蹲蹳蹴蹶蹷蹹蹻蹼蹽蹾蹿躁躄躅躇躉躍躏躐躒躔躘躛躜躞躦躩身躬躭躯躱躲躶躺躻躼躿軀軃軅軆軇軈軉車軌軍軎軏軐軒軓軔軘軙軛軟軠軡転軣軧軬軷軸軻軿輀輂較輈載輋輐輒輓輔輕輖輗輘輝輥輦輧輨輩輪輰輳輴輵輶輸輻輽輾輿轂轇轉轋轎轓轕轗轘轝轟轥车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辛辜辞辟辢辣辦辨辩辫辭辯辰辱農辵边辻込辽达迁迂迄迅迆过迈迋迍迎迏运近迒迓返迕还这进远违连迟迢迤迥迦迨迩迪迫迭迮迯述迳迴迷迸迹迺迻追退送适逃逄逅逆逇选逊逋逌逍透逐逑递逓途逕逖逗這通逛逝逞速造逡逢連逤逦逭逮逯週進逵逶逷逸逻逼逾逿遁遂遄遆遇遈遊運遍過遏遐遑遒道達違遗遘遙遛遜遝遞遠遡遢遣遥遨適遭遮遯遲遴遵遶遷選遹遺遽避邀邁邂邃還邅邆邇邈邉邊邋邌邏邑邓邔邕邗邘邙邛邝邠邡邢那邥邦邨邪邫邬邮邯邰邱邲邳邴邵邶邸邹邺邻邼邽邾邿郀郁郃郄郅郇郈郊郋郎郏郐郑郓郕郗郘郙郛郜郝郞郟郡郢郤郦郧部郪郫郭郯郴郵郸都郾郿鄂鄄鄉鄍鄑鄗鄘鄙鄚鄛鄜鄞鄟鄠鄡鄢鄣鄤鄦鄧鄩鄫鄬鄮鄯鄰鄱鄳鄶鄷鄹鄺鄽鄿酀酁酂酃酆酇酉酊酋酌配酎酐酒酖酗酚酝酞酡酢酣酤酥酦酨酩酪酬酮酯酰酱酲酳酴酵酶酷酸酹酺酼酽酾酿醁醃醄醅醆醇醉醊醋醌醍醎醐醑醒醕醖醚醛醜醞醡醢醣醥醨醪醫醭醮醯醰醱醲醴醵醺醻醼醽醾醿釀釆采釉释釋里重野量釐金釔釘釙釛釜針釟釠釡釢釣釤釥釦釪釭釱釾釿鈂鈆鈇鈉鈍鈕鈖鈙鈡鈣鈤鈦鈧鈨鈩鈪鈰鈱鈴鈵鈶鈸鈺鈽鈾鈿鉀鉁鉂鉃鉄鉅鉍鉏鉐鉔鉛鉤鉴鉼鉽銀銅銊銌銎銑銒銓銘銙銜銝銦銧銫銮銲銳銶銷鋂鋅鋆鋇鋈鋊鋋鋎鋐鋒鋕鋣鋤鋪鋫鋬鋭鋰鋱鋵鋷鋸鋹鋺鋻鋼鋾錃錄錆錈錋錏錐錗錞錠錢錣錥錦錧錨錫錯録錾鍀鍊鍋鍍鍎鍏鍐鍑鍓鍔鍚鍛鍟鍤鍥鍦鍧鍩鍪鍬鍮鍱鍳鍵鍸鍼鎄鎇鎋鎌鎍鎏鎔鎖鎗鎘鎚鎝鎪鎭鎮鎯鎰鎲鎴鎸鏁鏂鏆鏈鏉鏊鏍鏏鏐鏕鏖鏘鏟鏡鏢鏤鏦鏭鏰鏱鏸鏻鏽鏿鐄鐇鐍鐎鐏鐐鐑鐓鐖鐘鐣鐤鐧鐨鐩鐬鐮鐰鐲鐳鐴鐵鐷鐻鐾鐿鑀鑄鑊鑑鑕鑘鑛鑟鑢鑣鑨鑪鑫鑮鑰鑱鑲鑴鑵鑷鑽鑾鑿钁钃钅钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钜钝钞钟钠钡钢钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铌铍铎铏铐铑铒铓铔铕铖铗铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铩铪铫铬铭铮铯铰铱铲铳铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗锘错锚锛锜锝锞锟锡锢锣锤锥锦锧锨锩锪锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镄镅镆镇镈镉镊镌镍镎镏镐镑镒镓镔镕镖镗镘镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镵镶長镻长門閃閉開閏閑閒間閔閗閛閟関閣閤閧閬閭閮閯閰閱閳閴閶閷閹閺閻閽閾閿闀闃闄闅闆闇闉闊闌闍闒闕闚闛關闟闡闢门闩闪闫闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛阜队阡阢阤阨阪阮阯阱防阳阴阵阶阸阻阼阽阿陀陁陂附际陆陇陈陉陋陌降限陔陕陗陙陛陜陝陞陟陠陡院陣除陧陨险陪陬陮陰陲陳陴陵陶陷陸陻陼陽隂隃隄隅隆隈隊隋隍階随隐隔隗隘隙際障隝隣隤隥隦隧隨隩險隰隱隲隳隶隸隹隺隻隼隽难雀雁雄雅集雇雉雊雋雌雍雎雏雑雒雔雕雖雘雙雚雜雞雟雠離難雨雩雪雮雯雰雱雲雳零雷雹電雾需霁霂霄霅霆震霈霉霍霎霏霑霓霖霘霚霜霝霞霠霣霤霧霨霩霪霫霭霮霰露霳霸霹霾靃靄靈靉青靓靖静靛靜非靠靡面靣靥靦革靭靮靰靱靳靴靵靶靷靸靹靺靼靿鞄鞅鞊鞋鞍鞎鞏鞑鞒鞓鞔鞖鞗鞘鞚鞛鞝鞟鞠鞡鞣鞦鞧鞨鞪鞫鞬鞭鞮鞯鞲鞴鞺鞻鞿韂韆韈韋韌韍韓韗韟韥韦韧韨韩韪韫韬韭韮韰韱韲音韴韵韶韷韺韻韼韽響頁頂頃項順須頉頊頋頌頍頎預頒頓頗領頜頞頠頤頦頨頫頭頰頳頵頷頸頹頺頻顀顆題額顎顏顐顑顒顓顔顕顗願顛顝類顟顣顧顨顩顪顫顬顯顱顳顴页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颓颔颖颗题颙颚颛颜额颞颟颠颡颢颤颥颦颧風颩颱颵颺颻颼飀飆风飏飐飑飒飓飔飕飖飗飘飙飚飛飞食飢飥飦飧飨飩飪飭飮飯飰飲飳飷飸飺飼飽飾餀餁餂餃餅餆餇餈餉養餌餍餐餒餓餔餖餗餘餚餟餦館餫餬餮餱餵餼餽饅饆饈饋饌饏饐饑饒饔饕饘饜饝饟饡饤饥饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馍馏馐馑馒馓馔馕首馗馘香馥馧馨馬馮馳馴馻馿駃駉駋駐駕駚駛駜駝駞駡駣駥駨駮駰駳駵駶駷駸駹騁騃騄騇騊騍騎騔騙騛騠騣騧騫騰騷騺騻騼騽騾騿驀驁驂驄驅驆驇驈驊驌驎驑驕驖驗驘驙驚驛驟驡驢驥驦驩马驭驮驯驰驱驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骧骨骩骫骯骰骱骳骶骷骸骹骺骻骼骾骿髀髁髂髅髆髉髋髌髏髑髒髓體髕高髞髟髠髡髣髤髥髦髧髪髫髭髮髯髲髳髴髹髻髼髽髿鬀鬂鬃鬄鬅鬆鬈鬉鬋鬏鬐鬑鬓鬖鬘鬙鬚鬛鬟鬠鬢鬣鬥鬧鬯鬱鬲鬳鬶鬸鬻鬼鬽鬿魁魂魃魄魅魆魇魈魉魋魍魏魑魒魔魖魚魛魜魟魣魫魰魱魳魵魸魺魽魾魿鮀鮁鮄鮅鮇鮈鮊鮋鮌鮍鮎鮘鮟鮠鮡鮣鮨鮪鮭鮮鮰鮻鮼鮾鯀鯁鯂鯅鯆鯈鯊鯋鯏鯐鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛鯝鯡鯨鯩鯬鯮鯵鯶鯽鰁鰆鰉鰌鰍鰕鰜鰞鰟鰠鰡鰤鰧鰨鰪鰫鰬鰰鰲鰵鰷鰸鰹鰻鰽鰿鱀鱂鱄鱇鱉鱌鱓鱖鱗鱣鱤鱥鱧鱮鱯鱲鱵鱺鱻鱼鱽鱾鱿鲀鲁��鲃鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳚鳛鳜鳝鳞鳟鳠鳡鳢鳣鳤鳥鳩鳪鳰鳳鳴鳶鳷鳾鳿鴂鴃鴉鴐鴒鴓鴙鴜鴞鴟鴢鴣鴥鴦鴧鴨鴪鴫鴭鴮鴰鴱鴲鴳鴴鴵鴷鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂鵄鵋鵏鵝鵟鵣鵨鵪鵬鵰鵲鵳鵼鶃鶄鶆鶇鶈鶊鶍鶎鶐鶒鶓鶕鶗鶚鶜鶝鶟鶠鶡鶢鶩鶫鶲鶳鶴鶸鶺鷁鷃鷇鷉鷖鷘鷟鷣鷥鷦鷧鷩鷫鷭鷱鷲鷳鷴鷵鷷鷹鷺鷼鷽鷿鸀鸁鸂鸇鸊鸍鸓鸖鸘鸟鸠鸡鸢鸣鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹕鹖鹗鹘鹙鹚鹛鹜鹞鹟鹠鹡鹣鹤鹦鹧鹨鹩鹪鹫鹬鹭鹮鹯鹰鹱鹳鹵鹹鹼鹽鹾鹿麀麂麃麄麅麆麇麈麉麊麋麎麏麐麑麒麓麕麖麗麚麜麝麞麟麡麣麤麥麦麧麨麩麯麰麴麵麸麹麻麼麽麾麿黃黄黇黉黋黍黎黏黑黒黔默黛黜黝點黟黠黡黢黥黧黨黩黪黮黯黴黶黹黺黻黼黽黾黿鼂鼄鼅鼇鼈鼉鼊鼋鼍鼎鼏鼐鼑鼓鼖鼗鼘鼙鼜鼞鼠鼢鼤鼥鼩鼪鼫鼬鼮鼯鼰鼱鼶鼷鼹鼻鼾齁齄齆齊齋齏齐齑齒齗齛齜齡齢齣齦齧齮齯齰齲齸齺齻齼齽齾齿龀龁龂龃龄龅龆龇龈龉龊龋龌龍龎龑龒龓龔龙龚龛龜龝龟龠龢龤𢶯秊裏
+
+䰾䲁䲘䴉一上下不且世丟両並中主久之乎也乾亂了予事二互亙些亞亡交享亮亸人什仁今介仍仔他付代令以件任份企伏伐休伙估伴似但佇佈位低住佔何作你佩併使來侖依侮侵侶侷便俁係保俠信修倀倆倉個倍們倒倖候借倣倦倫值偉做停側偵偷偺偽傑傖傘備傚傢傭傯傲傳傴債傷傻傾僂僅僉像僑僕僥僨僱價儀儂億儈儉儐儔儕儘償優儲儷儺儻儼兄充兆兇先光克兌免兒兗入內全兩公共其具冊再冑冒冠冪冷凃凍凜凱出刃分切別利刪到制剄則剋前剎剛剝剩剪剮副割剴創剷劃劇劉劊劌劍劑力功加劣助努効勁勇勉動勗務勚勛勝勞勢勦勩勱勳勵勸勻包化匭匯匱區十千升午半卑卓協博占卡危即卹卻厙原厠厭厲厴去參叄又及友反取受叛叡叢口另只叫召可台史司吃各合吋同名吐向否吧吳吶吹呀呂呃呆告呎呢周呸呼命和咖咼品哇哈哎員哥哦哪哭哼唄唝唯唸啊問啞啟啡啣啦啰啴善喊喚喜喧喪喫喬單嗆嗇嗊嗎嗚嗩嗯嗶嘆嘍嘔嘖嘗嘛嘜嘩嘮嘯嘰嘴嘵嘻嘽嘿噁噓噝噢噥噦器噯噲噴噸噹嚀嚇嚐嚕嚙嚥嚦嚨嚮嚲嚳嚴嚶囀囁囂囅囈囉囊囌囑四回因囪圇國圍園圓圖團土在地圾坐坦坵垃型垯垱埃埋城域埡執培基堅堆堝堪堯報場塆塊塋塏塒塗塚塢塤填塵塹境墊墜增墮墳墶墾壇壋壓壘壙壚壞壟壠壢壩壪士壯壺壽外多夠夢夥大天太夫失夾奇奐奧奩奪奮女奴她奼好如妙妝妨妳始姍姑姦姪姿威娘娛婁婭婳媧媯媼媽嫗嫵嫺嫻嫿嬈嬋嬌嬙嬝嬡嬤嬪嬰嬸孃孌子字存孤孩孫學孿宂它宅宇安完官宙定客宣宮害家容寂寄密富寞寡寢實寧審寫寬寵寶封射將專尊尋對導小少尖就尷尾局屁屃居屆屍屓展屜屢層屨屬岡峣峯峴島峽崍崑崗崙崢嵐嵒嵚嶁嶄嶇嶔嶗嶠嶢嶧嶴嶸嶺嶽巋巒巔巖工巧巨差巰己已巴市希帥師席帳帶常幀幃幗幘幟幣幫幬平年幹幼幾床底度庫庭廁廂廄廈廚廝廟廠廡廢廣廩廬廳延建式弒弔弟弱張強彆彈彌彎彙形彥彩彫影彼往征待很後徑徒得從徠復徬微徹心必忍志忘忙忠快忽怎怕思急性怪恆恐恕恥恨恩息悅您悲悵悶悽情惜惡惱惲想惶惹惻意愚愛愜感愨愴愷愾慄慇慈態慍慘慚慟慢慣慨慪慫慭慮慳慶慷慼慾憂憊憐憑憒憖憚憤憫憮憲憶憾懂懃懇應懌懍懟懣懨懲懶懷懸懺懼懾戀戇成我戔或戧戩戰戲戶所扁手才打扞扭找承技把投抗抱抵抹拆拋拘招拜拭拯拿持指按挑振挺挾捏捕捨捫捲掃掄掉排掙掛採探掣接控推掩揀揍描提揚換揮揹揾搆損搖搗搞搥搧搭搵搶搾摀摃摑摜摟摧摯摳摶摻撈撐撓撕撚撟撣撥撫播撲撳撻撾撿擁擄擇擊擋擔據擠擣擦擬擯擰擱擲擴擷擺擻擼擾攄攆攏攔攖攙攛攜攝攢攣攤攩攪攬支收改攻放故敍救敗敘教敞敢散敬整敵數斂斃文斕料斥斬斯新斷方於施旂旅既日早旸昇明易星是昽時晉晚晝暈暉暗暘暢暫暱曄曆曇曉曖曠曨曬曲更書曾最會月有朋服朗望期朧本朮材束東果枱枴架某染柵柺柿校根格桶桿梔梘條梟梱梲梾梿棁棄棍棒棖棗棚棟棧棲棶楊楓楚楨業極概榦榮榿槃構槍槓槚槜槤槧槨槳樁樂樅樑樓標樞模樣樸樹樺橈橋機橢橫檁檇檉檔檜檟檢檣檯檳檸檻檾櫂櫃櫓櫚櫛櫝櫞櫟櫥櫧櫨櫪櫫櫬櫱櫳櫸櫺櫻欄權欏欒欖次欣欲欺欽款歉歌歎歐歛歟歡止正此步武歲歷歸死歿殆殘殞殤殫殭殮殯殲段殺殼毀毆母每毒比毘毿氂氈氌氣氫氬氳水永氹氾求汎汙汰汲決沄沉沍沒沖沨治況泊法注洩洶活派流浈浐浪浬浹涇消涢涯涼淒淘淚淡淥淨淪深淵��混淺清渙減渢渣渦測渴渾湊湞湧湯溇溈源準溝溫溳溼滄滅滌滎滓滪滬滯滲滴滸滻滾滿漁漂漊漚漢漣漫漬漲漸漿潁潑潔潛潤潯潰潿澀澆澇澐澗澠澤澦澮澱激濁濃濕濘濛濟濤濫濬濰濱濺濼濾瀅瀆瀉瀋瀏瀕瀘瀝瀟瀠瀦瀧瀨瀰瀲瀾灃灄灑灘灝灣灤灩火灰災炮炸為烈烏烤烴無然煇煉煒煖煙煢煥照煩煬熒熗熱熾燁燄燈燉燐燒燙燜營燦燬燭燴燻燼燾爍爐爛爭父爸爺爾牀牆片牘牠物牲牴特牽犖犛犢犧犯狀狂狗狝狹狽猙猛猶猻獁獄獅獎獨獪獫獮獰獲獵獷獸獺獻獼玀玆率玙玚玡玨玩珮珰現球理琍琎琺琿瑋瑒瑣瑤瑩瑪瑯璉璡璣璦璫環璵璽瓊瓏瓔瓚瓦甌甕甚生產甦用由甲甽界留畢略畫畬異當疇疊疭病痙痛痠痲痳痺瘆瘉瘋瘍瘓瘞瘡瘧瘮瘲瘺療癆癇癉癒癘癟癡癢癤癥癧癩癬癭癮癰癱癲發白百的皚皮皰皸皺盃益盔盡監盤盧目直相眉看真眠眼眾睜睡瞄瞧瞭矓知短石破硜硤硨硯碌碎碟確碼磧礙礪礫礬示社祝神禁禕禮秀私秈科秘移程稚種稱穌穎穠穡空穿突窮窶窺竊立站竟童端競笑笨第筆等答筜筧箇算管節篋篔簀簡簣籃籟籠籩籮粉精糕糖糝糟糲糶系糾約紅紆紈紉納紕級紜紡索細紲絀終組絆絎結絕絝絢給統絲綁綃綆綌經綞綢綣綬綯綰網綸綺綻綽綾緇緒緖緘緙緣緬練縉縊縐縑縝縟縭縮縲縵縶總繅繡繪繫繭繰繹繼繽繾纈纊續纓纜缺罌罩罪置罵罷羆羋美群羥羨義習翻翼翽老者而耬耶聊聘聞聯聰聲聳職聽肉肘肚肢肩肯背胎能脅脆腖腡腥腦腳膃膜膝膽膾臂臉臝臠臥自臭至臺與興舉舊舞般船艘艦良艱色芐花芽苦英荷莧菜華萇萌萬落葒著蒐蒓蒔蒙蓀蓄蓋蓽蔓蔭蔹蕆蕎蕕蕢蕩蕪蕭薄薈薊薌薘薟薩薪薺藎藏藥藪藹蘄蘊蘗蘚蘞蘢蘺處虛虧蛋蛺蜂蝦螄螻蟄蟈蟎蟣蟲蟶蠐蠑蠢蠱血衊行術街衛衞衣表袋被袯裊補裡製複褘褳褻襇襏襝襠襯襲襴西要覆見規覓視覘覡覦親覬覲覷覺覽覿觀解觴觶觸言計訊討訓訖託記訥訪設許訴訶詁詆詎詔評詘詡試詭話該誄誅誆誇認誑誓誚誣誤誦誨說誰課誶誹誼調談請諍諒論諗諜諞諢諤諧諫諭諳諶諷諼諾謁謅謊謎謐謔謖謗謙講謝謫謳謾證譎譏譖識譙譚警譭議譴護譾讀變讎讒讓讖豐豔豪貝負財貨貰貳貴貶買貺費賃資賊賑賒賕賞賠賣賤質賫賬賭賽賾贍贏贐贓贔贖贗贛赬走起超越趕趣趲足跑跟路跳踩蹕蹩蹺躂躊躋躑躓躕躚躡躥躪身躲軀車軋軌軍軑軟軤軫軲軹軺軼軾較輅輇載輊輕輛輜輞輟輩輬輯輸轀轄轅轆轉轍轔轟轡轢轤辜辮辱迅迎近返迪迫述迷追退送逃透逐途這通逝逞速造連進逼遇遊運遍過道達違遘遠適遭選遺遼避還邐那邪部郵都鄆鄒鄔鄖鄙鄭鄲鄴酈配酷醒醬釁釃釅采釋重量金釓釕釗釧釩釵釷釹釺鈀鈁鈃鈄鈈鈎鈐鈑鈔鈕鈞鈥鈮鈷鈹鉈鉉鉋鉑鉕鉗鉚鉞鉦鉬鉭鉸鉺鉻鉿銃銍銖銚銠銣銥銨銩銪銬銱銳銹銻銼鋁鋃鋌鋏鋙鋝鋟鋥鋦鋨鋯鋸錁錇錒錕錘錙錚錛錟錡錢錮錯錳錶錸鍁鍃鍆鍇鍘鍠鍰鍶鍺鍾鎂鎊鎖鎛鎡鎢鎣鎦鎧鎩鎬鎮鎳鎵鎿鏃鏌鏑鏗鏜鏝鏞鏡鏨鏵鏷鏹鐃鐋鐒鐔鐙鐝鐠鐦鐫鐸鐺鑌鑒鑔鑞鑠鑥鑭鑹鑼鑽钂铘铴镋長門閂閃閉開閌閎閒間閘閡閣閥閨閩閲閼闈闊闋闐闓闔闖關闞闥防阻附限陘院除陷隉隊隕際障隨險隴雄雅集雇雕雖雙雛雜離難雲零雷電需露霸霽靂靈靚靜非靠面靨革鞀韁韃韉韙韜韞音響頇須頏預頑頓領頡頭頲顆題願顙類顢顥顧顯顰颭颮颯颳颶颸飄飛飫飴飿餄養餎餏餐餑餓餛餜餞餡館餳餶餷餾餿饁饃饉饊饗饞饢馌首馨馬馭馱駁駑駒駔駘駛駟駢駭駱駿騂騅騏騖騙騤騭騮騶騸驃驅驍驏驕驗驚驤驪骨骸體髖高鬆鬍鬥鬧鬨鬩鬮鬼魎魔魘魚魢魨魯魴魷鮃鮐鮑鮓鮫鮶鯇鯉鯢鯤鯧鯪鯫鯴鯷鯿鰃鰈鰏鰓鰛鰣鰥鰩鰭鰱鰳鰺鰾鱅鱈鱒鱔鱘鱝鱟鱠鱭鱷鱸鲺鳥鳲鳴鴆鴇鴕鴛鴝鴯鵃鵐鵑鵒鵓鵜鵠鵡鵮鵯鶉鶘鶥鶯鶹鶻鶼鶿鷂鷊鷓鷗鷙鷚鷯鷸鸌鸏鸕鸚鸛鸝鸞鸤鹝鹲麗麪麻麼麽黌黏默點黷鼓鼕鼴齔齕齙齟齠齪齬齷龐龕
+
+"_—“”‥…‧♪ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〰︎〰️〱〲〳〴〵〶〷〸〹〺〻〼〽〽︎〽️〾〿・﹁﹂﹏!(),:;?[]{}~!。1234567890
+
+ḉ̣̮̱̀́̂̃̄̆̇̈̊̌̑ΘθΞξΥυΨψΩωϘАаБВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяЀѐЁёЂђЃѓЄєЅѕІіЇїЈјЉљЊњЋћЌќЍѝЎўЏџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӁӂӃӄӅӆӇӈӉӊӋӌӍӎӀӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌ��ԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯᴫᵸ–⃝◌Ⱛⱛⷠⷡⷢⷣⷤⷥⷦⷧⷨⷩⷪⷫⷬⷭⷮⷯⷰⷱⷲⷳⷴⷵⷶⷷⷸⷹⷺⷻⷼⷽⷾⷿ中文ꙀꙁꙂꙃꙄꙅꙆꙇꙈꙉꙊꙋꙌꙍꙎꙏꙐꙑꙒꙓꙔꙕꙖꙗꙘꙙꙚꙛꙜꙝꙞꙟꙠꙡꙢꙣꙤꙥꙦꙧꙨꙩꙪꙫꙬꙭꙮ꙯꙰꙱꙲꙳ꙴꙵꙶꙷꙸꙹꙺꙻ꙼꙽꙾ꙿꚀꚁꚂꚃꚄꚅꚆꚇꚈꚉꚊꚋꚌꚍꚎꚏꚐꚑꚒꚓꚔꚕꚖꚗꚘꚙꚚꚛꚜб
+
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿıƒ—‗’“”•‥…‧※≠─│┌┐└┘├┤┬┴┼═║╔╗╚╝╠╣╦╩╬▀▄█░▒▓■♪ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゙゚゛゜ゝゞゟァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヰヱヲンヴヶ・ーㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ一丁七万丈三上下不与且世丘丙両並丨中串丶丸丹主丼丿久乏乗乘乙九乞乱乳乾亀亂亅了予争事二互五井亜亞亠亡交享京亭人仁今介仏仕他付仙代令以仮仰仲件任企伎伏伐休会伝伯伴伸伺似但位低住佐体何余佛作佳併使來例侍供依価侮侯侵侶便係促俊俗保信修俳俵俸俺倂倉個倍倒候借倣値倫倹假偉偏停健側偵偶偽傍傑傘備催傲傳債傷傾僅働像僕僚僞僧價儀億儉儒償優儿元兄充兆先光克免児兒党入全兩八公六共兵具典兼冂内円冊再冒冖冗写冠冥冫冬冶冷凄准凍凝几凡処凵凶凸凹出刀刃分切刈刊刑列初判別利到制刷券刹刺刻則削前剖剛剝剣剤剩副剰割創劇劍劑力功加劣助努励労効劾勃勅勇勉動勘務勝勞募勢勤勧勲勳勵勸勹勾匂包匕化北匚匠匸匹区医匿區十千升午半卑卒卓協南単博卜占卩印危即却卵卷卸卽厂厄厘厚原厳厶去参參又及友双反収叔取受叙口古句叩叫召可台史右号司各合吉同名后吏吐向君吟否含吸吹呂呈呉告周呪味呼命和咲咽哀品員哲哺唄唆唇唐唯唱唾商問啓善喉喚喜喝喩喪喫單営嗅嗣嘆嘱嘲噂器噴嚇嚴囑囗囚四回因団困囲図固国圈國圍圏園圓圖團土圧在地坂均坊坑坪垂型垣埋城域執培基埼堀堂堅堆堕堤堪報場堵塀塁塊塑塔塗塚塞塡塩塵塾境墓増墜增墨墮墳墾壁壇壊壌壓壘壞壤士壮壯声壱売壹壽変夊夏夕外多夜夢大天太夫央失奇奈奉奏契奔奥奧奨奪奬奮女奴好如妃妄妊妖妙妥妨妬妹妻姉始姓委姫姻姿威娘娠娯婆婚婦婿媒媛嫁嫉嫌嫡嬢孃子孔字存孝季孤学孫學宀宅宇守安完宗官宙定宛宜宝実客宣室宮宰害宴宵家容宿寂寄密富寒寛寝察寡寢實寧審寫寬寮寶寸寺対寿封専射将將專尉尊尋對導小少尚尢就尸尺尻尼尽尾尿局居屆屈届屋屑展属層履屬屮屯山岐岡岩岬岳岸峠峡峰島峽崇崎崖崩嵐嶽巛川州巡巢巣工左巧巨差己巻巾市布帆希帝帥師席帯帰帳帶常帽幅幕幣干平年幸幹幺幻幼幽幾广庁広床序底店府度座庫庭庶康庸廃廉廊廢廣廳廴延廷建廾弁弄弊弋式弐弓弔引弟弥弦弧弱張強弾彈彌彐当彙彡形彩彫彰影彳役彼往征径待徊律後徐徑徒従得徘從御復循微徳徴徵德徹心必忌忍志忘忙応忠快念怒怖思怠急性怨怪恆恋恐恒恣恥恨恩恭息恵悔悟悠患悦悩悪悲悼情惑惚惜惠惡惧惨惰惱想愁愉意愚愛感愼慄慈態慌慎慕慘慢慣慨慮慰慶憂憎憤憧憩憬憲憶憾懇應懐懲懷懸戀戈成我戒戚戦戯戰戲戴戶戸戻戾房所扇扉手才打払扱扶批承技抄把抑投抗折抜択披抱抵抹押抽拂担拉拍拐拒拓拔拘拙招拜拝拠拡括拭拳拶拷拾持指挑挙挟挨挫振挾挿捉捕捗捜捨据捻掃授掌排掘掛採探接控推措掲描提插揚換握揭揮援揺損搖搜搬搭携搾摂摘摩摯撃撤撮撲擁擇擊操擔據擢擦擧擬擴攝支攴收改攻放政故效敍敏救敕敗教敢散敬数整敵敷數文斉斎斐斑斗料斜斤斥斬断新斷方施旅旋族旗无既日旦旧旨早旬旺昆昇明易昔星映春昧昨昭是昼時晚晝晩普景晰晴晶暁暇暑暖暗暦暫暮暴曆曇曉曖曜曰曲更書曹曽曾替最會月有服朕朗望朝期木未末本札朱朴机朽杉材村束条来杯東松板析枕林枚果枝枠枢枯架柄某染柔柱柳柵査柿栃栄栓校株核根格栽桁桃案桑桜桟梅梗條梨械棄棋棒棚棟棧森棺椅植椎検業極楷楼楽概榮構様槪槽樂樓標樞模樣権横樹橋機橫檢櫻欄權欠次欧欲欺款歌歐歓歡止正步武歩歯歳歴歷歸歹死殉殊残殖殘殳殴段殺殻殼殿毀毆毋母毎每毒比毛氏民气気氣水氷永氾汁求汎汗汚江池汰決汽沃沈沒沖沙没沢河沸油治沼沿況泉泊泌法泡波泣泥注泰泳洋洗洞津洪活派流浄浅浜浦浪浮浴海浸消涉涙涜涯液涼淑淚淡淨淫深混淺添清渇済渉渋渓減渡渦温測港渴湖湧湯湾湿満源準溜溝溪溫溶溺滅滋滑滝滞滯滴滿漁漂漆漏演漠漢漫漬漸潔潛潜潟潤潮潰澁澄澤激濁濃濕濟濫濯濱瀧瀨瀬灣火灯灰災炉炊炎炭点為烈無焦然焼煎煙照煩煮熊熟熱燃燈燒營燥爆爐爪爭爲爵父爻爽片版牙牛牧物牲特犠犧犬犯状狀狂狙狩独狭狹猛猟猫献猶猿獄獣獨獲獵獸獻玄率玉王玩珍珠班現球理琴瑠璃璧環璽瓜瓣瓦瓶甁甘甚生産用田由甲申男町画界畏畑畔留畜畝略番畫異畳當畿疊疋疎疑疒疫疲疾病症痕痘痛痢痩痴瘍瘦療癒癖癡癶発登發白百的皆皇皮皿盆益盗盛盜盟盡監盤目盲直相盾省眉看県眞真眠眺眼着睡督睦瞬瞭瞳矛矢知短矯石砂研砕砲破硏硝硫硬碁碎碑確磁磨礁礎示礼社祈祉祕祖祝神祥票祭禁禅禍福禪禮禾秀私秋科秒秘租秩称移程税稚種稱稲稻稼稽稿穀穂積穏穗穩穫穴究空突窃窒窓窟窮窯竊立竜竝章童端競竹笑笛符第筆等筋筒答策箇箋算管箱箸節範築篤簡簿籍籠米粉粋粒粗粘粛粧粹精糖糧糸系糾紀約紅紋納純紙級紛素紡索紫累細紳紹紺終組経結絕絞絡給統絲絵絶絹經継続綠維綱網綻綿緊総緑緒緖線締緣編緩緯練緻縁縄縛縣縦縫縮縱總績繁繊繋織繕繩繪繭繰繼續纖缶缺罐网罠罪置罰署罵罷羅羊美羞群羨義羽翁翌習翻翼老考者而耐耒耕耗耳聖聞聲聴職聽聿肅肉肌肖肘肝股肢肥肩肪肯育肺胃胆背胎胞胴胸能脂脅脇脈脊脚脱脳腎腐腕腦腫腰腸腹腺膚膜膝膨膳膽臆臓臟臣臨自臭至致臺臼與興舊舌舍舎舗舛舞舟航般舶舷船艇艦艮良色艶艷艸芋芝芯花芳芸芽苗苛若苦英茂茎茨茶草荒荘荷莊莖菊菌菓菜華萎萬落葉著葛葬蒸蓄蓋蔑蔵蔽薄薦薪薫薬薰藍藏藝藤藥藩藻虍虎虐處虚虛虜虞號虫虹蚊蚕蛇蛍蛮蜂蜜融螢蟲蠶蠻血衆行術街衛衝衞衡衣表衰衷袋袖被裁裂装裏裕補裝裸製裾複褐褒襃襟襲襾西要覆覇見規視覚覧親観覺覽觀角解触觸言訂訃計討訓託記訟訪設許訳訴診証詐詔評詞詠詣試詩詮詰話該詳誇誉誌認誓誕誘語誠誤説読誰課調談請論諦諧諭諮諸諾謀謁謄謎謙講謝謠謡謹證識譜警譯議譲護譽讀變讓谷豆豊豐豕豚象豪豫豸貌貝貞負財貢貧貨販貪貫責貯貳貴買貸費貼貿賀賂賃賄資賊賓賛賜賞賠賢賣賦質賭賴購贈贊赤赦走赴起超越趣足距跡路跳践踊踏踐踪蹴躍身車軌軍軒軟転軸軽較載輕輝輩輪輸轄轉辛辞辣辨辭辯辰辱農辵辺込辿迅迎近返迫迭述迷追退送逃逆透逐逓途通逝速造連逮週進逸遂遅遇遊運遍過道達違遜遞遠遡遣適遭遮遲遵遷選遺避還邊邑那邦邪邸郊郎郞郡部郭郵郷都鄕酉酌配酎酒酔酢酪酬酵酷酸醉醒醜醫醸釀釆采釈釋里重野量金釜針釣鈍鈴鉄鉛鉢鉱銀銃銅銘銭鋭鋳鋼錄錠錢錦錬錮錯録鍊鍋鍛鍵鎌鎖鎭鎮鏡鐘鐵鑄鑑鑛長門閉開閑間関閣閥閲闇闘關阜阪防阻附降限陛院陣除陥陪陰陳陵陶陷陸険陽隅隆隊階随隔隙際障隠隣隨險隱隶隷隹隻雄雅集雇雌雑雙雜離難雨雪雰雲零雷電需震霊霜霧露霸靈靑青静靜非面革靴韋韓音韻響頁頂頃項順須預頑頒頓領頭頰頻頼題額顎顔顕願類顧顯風飛飜食飢飯飲飼飽飾餅養餌餓餘餠館首香馬駄駅駆駐駒騎騒験騰騷驅驗驚驛骨骸髄髓體高髟髪髮鬥鬭鬯鬱鬼魂魅魔魚鮮鯨鳥鳴鶏鶴鷄鹵鹽鹿麓麗麥麦麵麺麻黃黄黑黒默黙點黨鼓鼻齊齋齒齡齢龍龜𠠀欄廊朗虜殺類隆塚神祥福諸都侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海漢煮碑社祉祈祖祝禍穀突節練繁署者臭著褐視謁謹賓贈逸難響頻︎️﹁﹂﹏!(),0123456789:;?[]{}~・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�
+
+ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅓㅔㅕㅗㅘㅛㅜㅠㅡㅢㅣㅿㆁㆆㆍ가각갂간갇갈갉감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹걀걔거걱건걷걸걹검겁것겄겅겆겉겊겋게겐겔겜겟겠겡겨격겪견겯결겸겹겼경곁계곗고곡곤곧골곪곬곯곰곱곳공곶곺과곽관괄괌괍괏광괘괙괜괠괨괩괭괴괵괸괼굄굉교구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궝궤궹귀귄귈귐귑귓귕규균귤귬그극근귿글긁긇금급긋긍긎긏긑긔기긱긴긷길김깁깃깄깅깊까깍깎깐깔깜깝깟깠깡깢깥깨깩깬깰깸깹깻깼깽꺄꺅꺼꺽꺾껀껄껌껍껏껐껑께껜껭껴꼉꼍꼬꼭꼰꼴꼼꼽꼿꽁꽂꽃꽈꽉꽌꽐꽘꽜꽝꽤꽥꽹꾀꾄꾈꾐꾕꾜꾸꾹꾼꾿꿀꿇꿈꿉꿋꿍꿎꿔꿘꿩꿰뀀뀌뀍뀐뀔뀜뀝뀨끄끅끈끊끌끓끔끕끗끙끝끠끼끽낀낄낌낍낏낐낑나낙낚난낟날낡남납낫났낭낮낯낱낳내낵낸낻낼냄냅냇냈냉냐냑냠냥냬너넉넋넌넏널넓넘넙넛넜넝넞넣네넥넨넬넴넵넷녀녁년념녑녓녔녕녘녜노녹녺논놀놈놉놋농높놓놔놨뇌뇐뇔뇜뇨뇽누눅눈눋눌눓눔눕눗눠눳눴뉘뉜뉠뉨뉩뉴늄늉느늑는늘늙늠늡능늦늪늬니닉닌닐님닙닛닝닢다닥닦단닫달닭닮닳담답닷당닺닻닿대댁댄댈댐댑댓댔댕더덕던덛덜덟덤덥덧덨덩덪덫덮데덱덴델뎀뎃뎅뎌도독돈돋돌돐돔돕돗동돛돼됀됐되된될됨됩됫됬두둑둔둘둠둡둣둥둬뒀뒈뒤뒷듀듈듐드득든듣들듬듭듯등디딕딘딛딜딤딥딧딨딩딪따딱딲딴딷딸땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떫떰떱떳떴떵떻떼뗀뗄뗌뗏뗑또똑똔똘똥뙤뚜뚝뚤뚫뚬뚱뛰뛴뛸뜀뜁뜨뜩뜬뜯뜰뜸뜹뜻띄띈띠띤띨띰띱띵라락란랄람랍랏랐랑랗래랙랜랠램랩랫랬랭랴략량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례로록론롤롬롭롯롱뢰료룡루룩룬룰룸룹룻룽뤄뤼류륙륜률륨륭르륵른를름릅릇릉릎리릭린릴림립릿링맄마막만많맏말맑맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀머먹먼멀멈멉멋멍멎멓메멕멘멜멤멥멧며멱면멸몃몄명몇모목몫몬몰몸몹못몽뫃뫼묏묘무묵묶문묻물묽뭄뭇뭉뭍뭏뭐뭔뭘뭡뭣뮈뮌뮤뮬뮴므믄믈믐미믹민믿밀밈밉밋밌밍및밑바박밖반받발밝밟밤밥밧방밭배백밴밷밸뱀뱁뱃뱄뱅버벅번벋벌범법벗벘벙벚베벡벤벧벨벰벱벳벵벼벽변별볌볍볏볐병볒볕보복볶본볼봄봅봇봉봐봔봤뵈뵉뵌뵐뵘뵙뵤부북분붇불붉붐붑붓붕붙붜뷔뷰브븍븐블븜븝븟비빅빈빋빌빎빔빕빗빙빚빛빠빡빤빨빰빱빳빴빵빻빼빽뺀뺄뺌뺏뺐뺑뺘뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼈뼉뼘뼝뽀뽁뽄뽈뽐뽑뽕뾰뿀뿅뿌뿍뿐뿔뿜뿝뿡쁘쁙쁜쁠쁨쁩삐삑삔삘삠삣삥사삭삮삯산삳살삵삶삼삽삿샀상샅새색샌샏샐샘샙샛샜생샤샥샨샬샴샷샹서석섞선섣설섥섦섧섪섬섭섯섰성섶세섹센셀셈셉셋셍셑셔션셜셧셨셰소속솎손솔솜솝솟송솥솨솩솰쇄쇈쇗쇠쇤쇨쇰쇱쇳쇼쇽숀숄숍수숙순숟술숨숩숫숭숯숱숲숴쉐쉘쉬쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싼쌀쌈쌉쌋쌌쌍쌓쌔쌕쌘쌜쌤쌧쌨쌩쌰썃썅써썩썬썰썲썸썹썼썽쎄쎈쎙쏘쏙쏜쏟쏠쏨쏭쏴쏵쐐쐬쐰쐴쐼쐿쑤쑥쑨쑬쑴쑹쒀쒔쓔쓕쓰쓱쓴쓸씀씁씌씐씨씩씬씰씸씹씻씽아악안앉않알앍앎앏앒앓암압앗았앙앞앟애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏얐양얕얗얘얜얫얱어억얶언얹얺얻얼얽엄업없엇었엉엊엌엎에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옆옇예옌옐옛옜옝오옥온올옭옮옳옴옵옷옹옺옻와왁완왈왐왑왓왔왕왜왝왠왱외왹왼욀욈욋욍요욕욘욥욧용우욱운욷울욹욺움웁웃웅워웍원월웜웝웟웠웡웨웩웬웰웸웹웽위윅윈윌윔윗윙유육윤율윰윳융윷으윽은을읊음읍응의이익인일읽잃임입잇있잉잊잎자작잔잖잘잠잡잣잤장잦잧재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟘저적전절젊점접젓젔정젖제젝젠젤젬젭젯져젼졌조족존졸졺좀좁종좆좇좋좌좍좐좔좜좝좟좠좨좬좰좸죄죈죌죔죕죗죠죤죰죱죵주죽준줄줆줌줍줏중줘줬쥐쥔쥘쥠쥡쥬쥰쥴즈즉즌즐즘즙증지직진짇질짊짐집짓징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨘쩌쩍쩐쩔쩜쩝쩡쪄쪘쪼쪽쫀쫄쫌쫍쫑쫒쫓쫘쫙쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쮸쯔쯤쯧찌찍찐찔찜찝찡찢찧차착찬찮찯찰참찹찻찼창찾찿채책챈챌챔챕챘챙챠챤챰챱처척천철첨첩첫청체첵첸첼쳇쳐쳤초촉촌촐촘촙촛총촬최쵸추축춘출춤춥춧충춰췄췌취츄츠측츰층치칙친칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캥캬캭커컨컬컴컵컷컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾍쾡쾰쿄쿠쿡쿤쿨쿰쿳쿵쿼퀘퀭퀴퀵퀸큐크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱터턱턴털텀텁텃텄텅테텍텐텔템텝텟텠텡텨토톡톤톨톰톱톳통퇘퇴퇸투툭툰툴툼툽툿퉁퉤퉷튀튄튈튐튑튓튕튜튬트특튼튿틀틈틉틋틔티틱틴틸팀팁팅파팍팎판팔팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴펵편펼폄폅폈평폐포폭폰폴폼폽폿퐁푀푄표푯푸푹푼풀품풉풋풍퓌퓨프픈플픔픕피픽핀��핌핍핏핑하학한할핥함합핫핬항핱해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜호혹혼홀홈홉홋홍화확환활홧황홰홱횃회획횟횡효후훅훈훌훑훔훗훠훤훨훰훼휀휑휘휙휜휠휨휩휭휴휼흄흉흐흑흔흗흘흙흠흡흣흥흩희흰흴히힉힌힐힘힙힛힝︎️
+
+ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ÆⱭÐƎƏƐƔIJƖŊŒƆƱ‘ẞÞƲǷȜƷʔæɑðǝəɛɣıijɩŋœɔʊĸſßþʋƿȝʒôĄ̧ƁÇĐƊƉĘȨƑǤĦꞪĮƗƘŁƝǪØƠɌŞŢŦŲƯɄ̨ƳąɓçđɗɖęȩƒǥħɦįɨƙłɲǫøơɍşţŧųưʉƴäëÁÀÂÄǍĂĀÃÅǺǼǢĆĊĈČĎḌÉÈĖÊËĚĔĒẼẸĠĜǦĞ̃ĢáàâǎăāãåǻǽǣćċĉčďḍéèėêěĕēẽẹġĝǧğģíüõĤḤÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿʼŃ̈ŇÑŅÓÒÔÖǑŎŌÕŐỌǾĥḥìîïǐĭīĩịĵķǩĺļľŀʼnńňñņóòöǒŏōőọǿḶŔŘŖŚŜŠȘṢŤȚṬÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮŕřŗśŝšșṣťțṭúùûǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯ
+
+!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`AaBbCcDdEeFfGgHhIiİJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿×ßÀàÁáÂâÃãÄäÅåÆæÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖö÷ØøÙùÚúÛûÜüÝýÞþÿŸĀāĂ㥹ĆćĊċČčĎďĒēĖėĘęĚěĞğĠġĢģĦħĪīĮįıIJijĶķĹĺĻļĽľŁłŃńŅņŇňŐőŒœŔŕŘřŚśŞşŠšŤťŪūŮůŰűŲųŹźŻżŽžƒDždžDzdzȚțˇ˘˙˛˜;΄΅·ΐΆάΈέΉήΊίΰΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρςΣσΤτΥυΦφΧχΨψΩωΪϊΫϋΌόΎύΏώАаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяЁё–—‘‚‛“”„†‡•…‰′″‹›※€№™←↑→↓⇒⇔∀∂√∞∴∵⊂⊃⌒■□▲△▼▽◆◇○◎●★☆♀♂♪♭ 、。〃々〆「」『』【】〒ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわをんゝゞァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヲンヴヵヶ・ー仝!?~
+
+# Badwords
+
+2g1c
+2 girls 1 cup
+acrotomophilia
+alabama hot pocket
+alaskan pipeline
+anal
+anilingus
+anus
+apeshit
+arsehole
+ass
+asshole
+assmunch
+auto erotic
+autoerotic
+babeland
+baby batter
+baby juice
+ball gag
+ball gravy
+ball kicking
+ball licking
+ball sack
+ball sucking
+bangbros
+bangbus
+bareback
+barely legal
+barenaked
+bastard
+bastardo
+bastinado
+bbw
+bdsm
+beaner
+beaners
+beaver cleaver
+beaver lips
+beastiality
+bestiality
+big black
+big breasts
+big knockers
+big tits
+bimbos
+birdlock
+bitch
+bitches
+black cock
+blonde action
+blonde on blonde action
+blowjob
+blow job
+blow your load
+blue waffle
+blumpkin
+bollocks
+bondage
+boner
+boob
+boobs
+booty call
+brown showers
+brunette action
+bukkake
+bulldyke
+bullet vibe
+bullshit
+bung hole
+bunghole
+busty
+butt
+buttcheeks
+butthole
+camel toe
+camgirl
+camslut
+camwhore
+carpet muncher
+carpetmuncher
+chocolate rosebuds
+cialis
+circlejerk
+cleveland steamer
+clit
+clitoris
+clover clamps
+clusterfuck
+cock
+cocks
+coprolagnia
+coprophilia
+cornhole
+coon
+coons
+creampie
+cum
+cumming
+cumshot
+cumshots
+cunnilingus
+cunt
+darkie
+date rape
+daterape
+deep throat
+deepthroat
+dendrophilia
+dick
+dildo
+dingleberry
+dingleberries
+dirty pillows
+dirty sanchez
+doggie style
+doggiestyle
+doggy style
+doggystyle
+dog style
+dolcett
+domination
+dominatrix
+dommes
+donkey punch
+double dong
+double penetration
+dp action
+dry hump
+dvda
+eat my ass
+ecchi
+ejaculation
+erotic
+erotism
+escort
+eunuch
+fag
+faggot
+fecal
+felch
+fellatio
+feltch
+female squirting
+femdom
+figging
+fingerbang
+fingering
+fisting
+foot fetish
+footjob
+frotting
+fuck
+fuck buttons
+fuckin
+fucking
+fucktards
+fudge packer
+fudgepacker
+futanari
+gangbang
+gang bang
+gay sex
+genitals
+giant cock
+girl on
+girl on top
+girls gone wild
+goatcx
+goatse
+god damn
+gokkun
+golden shower
+goodpoop
+goo girl
+goregasm
+grope
+group sex
+g-spot
+guro
+hand job
+handjob
+hard core
+hardcore
+hentai
+homoerotic
+honkey
+hooker
+horny
+hot carl
+hot chick
+how to kill
+how to murder
+huge fat
+humping
+incest
+intercourse
+jack off
+jail bait
+jailbait
+jelly donut
+jerk off
+jigaboo
+jiggaboo
+jiggerboo
+jizz
+juggs
+kike
+kinbaku
+kinkster
+kinky
+knobbing
+leather restraint
+leather straight jacket
+lemon party
+livesex
+lolita
+lovemaking
+make me come
+male squirting
+masturbate
+masturbating
+masturbation
+menage a trois
+milf
+missionary position
+mong
+motherfucker
+mound of venus
+mr hands
+muff diver
+muffdiving
+nambla
+nawashi
+negro
+neonazi
+nigga
+nigger
+nig nog
+nimphomania
+nipple
+nipples
+nsfw
+nsfw images
+nude
+nudity
+nutten
+nympho
+nymphomania
+octopussy
+omorashi
+one cup two girls
+one guy one jar
+orgasm
+orgy
+paedophile
+paki
+panties
+panty
+pedobear
+pedophile
+pegging
+penis
+phone sex
+piece of shit
+pikey
+pissing
+piss pig
+pisspig
+playboy
+pleasure chest
+pole smoker
+ponyplay
+poof
+poon
+poontang
+punany
+poop chute
+poopchute
+porn
+porno
+pornography
+prince albert piercing
+pthc
+pubes
+pussy
+queaf
+queef
+quim
+raghead
+raging boner
+rape
+raping
+rapist
+rectum
+reverse cowgirl
+rimjob
+rimming
+rosy palm
+rosy palm and her 5 sisters
+rusty trombone
+sadism
+santorum
+scat
+schlong
+scissoring
+semen
+sex
+sexcam
+sexo
+sexy
+sexual
+sexually
+sexuality
+shaved beaver
+shaved pussy
+shemale
+shibari
+shit
+shitblimp
+shitty
+shota
+shrimping
+skeet
+slanteye
+slut
+s&m
+smut
+snatch
+snowballing
+sodomize
+sodomy
+spastic
+spic
+splooge
+splooge moose
+spooge
+spread legs
+spunk
+strap on
+strapon
+strappado
+strip club
+style doggy
+suck
+sucks
+suicide girls
+sultry women
+swastika
+swinger
+tainted love
+taste my
+tea bagging
+threesome
+throating
+thumbzilla
+tied up
+tight white
+tit
+tits
+titties
+titty
+tongue in a
+topless
+tosser
+towelhead
+tranny
+tribadism
+tub girl
+tubgirl
+tushy
+twat
+twink
+twinkie
+two girls one cup
+undressing
+upskirt
+urethra play
+urophilia
+vagina
+venus mound
+viagra
+vibrator
+violet wand
+vorarephilia
+voyeur
+voyeurweb
+voyuer
+vulva
+wank
+wetback
+wet dream
+white power
+whore
+worldsex
+wrapping men
+wrinkled starfish
+xx
+xxx
+yaoi
+yellow showers
+yiffy
+zoophilia
+baiser
+bander
+bigornette
+bite
+bitte
+bloblos
+bordel
+bourré
+bourrée
+brackmard
+branlage
+branler
+branlette
+branleur
+branleuse
+brouter le cresson
+caca
+chatte
+chiasse
+chier
+chiottes
+clito
+con
+connard
+connasse
+conne
+couilles
+cramouille
+cul
+déconne
+déconner
+emmerdant
+emmerder
+emmerdeur
+emmerdeuse
+enculé
+enculée
+enculeur
+enculeurs
+enfoiré
+enfoirée
+étron
+fille de pute
+fils de pute
+folle
+foutre
+gerbe
+gerber
+gouine
+grande folle
+grogniasse
+gueule
+jouir
+la putain de ta mère
+MALPT
+ménage à trois
+merde
+merdeuse
+merdeux
+meuf
+nègre
+nique ta mère
+nique ta race
+palucher
+pédale
+pédé
+péter
+pipi
+pisser
+pouffiasse
+pousse-crotte
+putain
+pute
+ramoner
+sac à foutre
+sac à merde
+salaud
+salope
+suce
+tapette
+tanche
+teuch
+tringler
+trique
+troncher
+trou du cul
+turlute
+zigounette
+zizi
+noune
+osti
+criss
+crisse
+calice
+tabarnak
+viarge
+Asesinato
+asno
+Bollera
+Cabrón
+Caca
+Chupada
+Chupapollas
+Chupetón
+concha
+Concha de tu madre
+Coño
+Coprofagía
+Culo
+Drogas
+Esperma
+Fiesta de salchichas
+Follador
+Follar
+Gilipichis
+Gilipollas
+Hacer una paja
+Haciendo el amor
+Heroína
+Hija de puta
+Hijaputa
+Hijo de puta
+Hijoputa
+Idiota
+Imbécil
+infierno
+Jilipollas
+Kapullo
+Lameculos
+Maciza
+Macizorra
+maldito
+Mamada
+Marica
+Maricón
+Mariconazo
+martillo
+Mierda
+Nazi
+Orina
+Pedo
+Pendejo
+Pervertido
+Pezón
+Pinche
+Pis
+Prostituta
+Puta
+Racista
+Ramera
+Sádico
+Semen
+Sexo
+Sexo oral
+Soplagaitas
+Soplapollas
+Tetas grandes
+Tía buena
+Travesti
+Trio
+Verga
+vete a la mierda
+Vulva
+analritter
+arsch
+arschficker
+arschlecker
+arschloch
+bimbo
+bratze
+bumsen
+bonze
+dödel
+fick
+ficken
+flittchen
+fotze
+fratze
+hackfresse
+hure
+hurensohn
+ische
+kackbratze
+kacke
+kacken
+kackwurst
+kampflesbe
+kanake
+kimme
+lümmel
+MILF
+möpse
+morgenlatte
+möse
+mufti
+muschi
+nackt
+neger
+nippel
+nutte
+onanieren
+orgasmus
+pimmel
+pimpern
+pinkeln
+pissen
+popel
+poppen
+reudig
+rosette
+schabracke
+schlampe
+scheiße
+scheisser
+schiesser
+schnackeln
+schwanzlutscher
+schwuchtel
+tittchen
+titten
+vögeln
+vollpfosten
+wichse
+wichsen
+wichser
+allupato
+ammucchiata
+anale
+arrapato
+arrusa
+arruso
+assatanato
+bagascia
+bagassa
+bagnarsi
+baldracca
+balle
+battere
+battona
+belino
+biga
+bocchinara
+bocchino
+bofilo
+boiata
+bordello
+brinca
+bucaiolo
+budiùlo
+busone
+cacca
+caciocappella
+cadavere
+cagare
+cagata
+cagna
+casci
+cazzata
+cazzimma
+cazzo
+cesso
+cazzone
+checca
+chiappa
+chiavare
+chiavata
+ciospo
+ciucciami il cazzo
+coglione
+coglioni
+cornuto
+cozza
+culattina
+culattone
+culo
+ditalino
+fava
+femminuccia
+fica
+figa
+figlio di buona donna
+figlio di puttana
+figone
+finocchio
+fottere
+fottersi
+fracicone
+fregna
+frocio
+froscio
+goldone
+guardone
+imbecille
+incazzarsi
+incoglionirsi
+ingoio
+leccaculo
+lecchino
+lofare
+loffa
+loffare
+mannaggia
+merda
+merdata
+merdoso
+mignotta
+minchia
+minchione
+mona
+monta
+montare
+mussa
+nave scuola
+nerchia
+padulo
+palle
+palloso
+patacca
+patonza
+pecorina
+pesce
+picio
+pincare
+pippa
+pinnolone
+pipì
+pippone
+pirla
+pisciare
+piscio
+pisello
+pistolotto
+pomiciare
+pompa
+pompino
+porca
+porca madonna
+porca miseria
+porca puttana
+porco
+porco due
+porco zio
+potta
+puppami
+puttana
+quaglia
+recchione
+regina
+rincoglionire
+rizzarsi
+rompiballe
+rompipalle
+ruffiano
+sbattere
+sbattersi
+sborra
+sborrata
+sborrone
+sbrodolata
+scopare
+scopata
+scorreggiare
+sega
+slinguare
+slinguata
+smandrappata
+soccia
+socmel
+sorca
+spagnola
+spompinare
+sticchio
+stronza
+stronzata
+stronzo
+succhiami
+succhione
+sveltina
+sverginare
+tarzanello
+terrone
+testa di cazzo
+tette
+tirare
+topa
+troia
+trombare
+vacca
+vaffanculo
+vangare
+zinne
+zio cantante
+zoccola
+سكس
+طيز
+شرج
+لعق
+لحس
+مص
+تمص
+بيضان
+ثدي
+بز
+بزاز
+حلمة
+مفلقسة
+بظر
+كس
+فرج
+شهوة
+شاذ
+مبادل
+عاهرة
+جماع
+قضيب
+زب
+لوطي
+لواط
+سحاق
+سحاقية
+اغتصاب
+خنثي
+احتلام
+نيك
+متناك
+متناكة
+شرموطة
+عرص
+خول
+قحبة
+لبوة
+bychara
+byk
+chernozhopyi
+dolboy'eb
+ebalnik
+ebalo
+ebalom sch'elkat
+gol
+mudack
+opizdenet
+osto'eblo
+ostokhuitel'no
+ot'ebis
+otmudohat
+otpizdit
+otsosi
+padlo
+pedik
+perdet
+petuh
+pidar gnoinyj
+pizda
+pizdato
+pizdatyi
+piz'det
+pizdetc
+pizdoi nakryt'sja
+pizd'uk
+piz`dyulina
+podi ku'evo
+poeben
+po'imat' na konchik
+po'iti posrat
+po khuy
+poluchit pizdy
+pososi moyu konfetku
+prissat
+proebat
+promudobl'adsksya pizdopro'ebina
+propezdoloch
+prosrat
+raspeezdeyi
+raspizdatyi
+raz'yebuy
+raz'yoba
+s'ebat'sya
+shalava
+styervo
+sukin syn
+svodit posrat
+svoloch
+trakhat'sya
+trimandoblydskiy pizdoproyob
+ubl'yudok
+uboy
+u'ebitsche
+vafl'a
+vafli lovit
+v pizdu
+vyperdysh
+vzdrochennyi
+yeb vas
+za'ebat
+zaebis
+zalupa
+zalupat
+zasranetc
+zassat
+zlo'ebuchy
+бздёнок
+блядки
+блядовать
+блядство
+блядь
+бугор
+во пизду
+встать раком
+выёбываться
+гандон
+говно
+говнюк
+голый
+дать пизды
+дерьмо
+дрочить
+другой дразнится
+ёбарь
+ебать
+ебать-копать
+ебло
+ебнуть
+ёб твою мать
+жопа
+жополиз
+играть на кожаной флейте
+измудохать
+каждый дрочит как он хочет
+какая разница
+как два пальца обоссать
+курите мою трубку
+лысого в кулаке гонять
+малофья
+манда
+мандавошка
+мент
+муда
+мудило
+мудозвон
+наебать
+наебениться
+наебнуться
+на фиг
+на хуй
+на хую вертеть
+на хуя
+нахуячиться
+невебенный
+не ебет
+ни за хуй собачу
+ни хуя
+обнаженный
+обоссаться можно
+один ебётся
+опесдол
+офигеть
+охуеть
+охуительно
+половое сношение
+секс
+сиськи
+спиздить
+срать
+ссать
+траxать
+ты мне ваньку не валяй
+фига
+хапать
+хер с ней
+хер с ним
+хохол
+хрен
+хуёво
+хуёвый
+хуем груши околачивать
+хуеплет
+хуило
+хуиней страдать
+хуиня
+хуй
+хуйнуть
+хуй пинать
+buzna
+čumět
+čurák
+debil
+do piče
+do prdele
+dršťka
+držka
+flundra
+hajzl
+hovno
+chcanky
+chuj
+jebat
+kokot
+kokotina
+koňomrd
+kunda
+kurva
+mamrd
+mrdat
+mrdka
+mrdník
+oslošoust
+piča
+píčus
+píchat
+prcat
+prdel
+prdelka
+sračka
+srát
+šoustat
+šulin
+vypíčenec
+zkurvit
+zkurvysyn
+zmrd
+žrát
+bøsserøv
+fisse
+fissehår
+hestepik
+kussekryller
+lort
+luder
+pik
+pikhår
+pikslugeri
+piksutteri
+pis
+røv
+røvhul
+røvskæg
+røvspræke
+آب کیر
+ارگاسم
+برهنه
+پورن
+پورنو
+تجاوز
+تخمی
+جق
+جقی
+جلق
+جنده
+چوچول
+حشر
+حشری
+داف
+دودول
+ساک زدن
+سکس
+سکس کردن
+سکسی
+سوپر
+شق کردن
+شهوت
+شهوتی
+شونبول
+فیلم سوپر
+کس
+کس دادن
+کس کردن
+کسکش
+کوس
+کون
+کون دادن
+کون کردن
+کونکش
+کونی
+کیر
+کیری
+لاپا
+لاپایی
+لاشی
+لخت
+لش
+منی
+هرزه
+alfred nussi
+bylsiä
+haahka
+haista paska
+haista vittu
+hatullinen
+helvetisti
+hevonkuusi
+hevonpaska
+hevonperse
+hevonvittu
+hevonvitunperse
+hitosti
+hitto
+huorata
+hässiä
+juosten kustu
+jutku
+jutsku
+jätkä
+kananpaska
+koiranpaska
+kuin esterin perseestä
+kulli
+kullinluikaus
+kuppainen
+kusaista
+kuseksia
+kusettaa
+kusi
+kusipää
+kusta
+kyrpiintynyt
+kyrpiintyä
+kyrpiä
+kyrpä
+kyrpänaama
+kyrvitys
+lahtari
+lutka
+molo
+molopää
+mulkero
+mulkku
+mulkvisti
+muna
+munapää
+munaton
+mutakuono
+mutiainen
+naida
+nainti
+narttu
+neekeri
+nekru
+nuolla persettä
+nussia
+nussija
+nussinta
+paljaalla
+palli
+pallit
+paneskella
+panettaa
+panna
+pano
+pantava
+paska
+paskainen
+paskamainen
+paskanmarjat
+paskantaa
+paskapuhe
+paskapää
+paskattaa
+paskiainen
+paskoa
+pehko
+pentele
+perkele
+perkeleesti
+persaukinen
+perse
+perseennuolija
+perseet olalla
+persereikä
+perseääliö
+persläpi
+perspano
+persvako
+pilkunnussija
+pillu
+pillut
+pipari
+piru
+pistää
+pyllyvako
+reikä
+reva
+ripsipiirakka
+runkata
+runkkari
+runkkaus
+runkku
+ryssä
+rättipää
+saatanasti
+suklaaosasto
+tavara
+toosa
+tuhkaluukku
+tumputtaa
+turpasauna
+tussu
+tussukka
+tussut
+vakipano
+vetää käteen
+viiksi
+vittu
+vittuilla
+vittuilu
+vittumainen
+vittuuntua
+vittuuntunut
+vitun
+vitusti
+vituttaa
+vitutus
+äpärä
+puta ka
+putang ina
+tang ina
+tangina
+burat
+bayag
+bobo
+nognog
+tanga
+ulol
+kantot
+anak ka ng puta
+jakol
+aand
+aandu
+balatkar
+balatkari
+behen chod
+beti chod
+bhadva
+bhadve
+bhandve
+bhangi
+bhootni ke
+bhosad
+bhosadi ke
+boobe
+chakke
+chinaal
+chinki
+chod
+chodu
+chodu bhagat
+chooche
+choochi
+choope
+choot
+choot ke baal
+chootia
+chootiya
+chuche
+chuchi
+chudaap
+chudai khanaa
+chudam chudai
+chude
+chut
+chut ka chuha
+chut ka churan
+chut ka mail
+chut ke baal
+chut ke dhakkan
+chut maarli
+chutad
+chutadd
+chutan
+chutia
+chutiya
+gaand
+gaandfat
+gaandmasti
+gaandufad
+gandfattu
+gandu
+gashti
+gasti
+ghassa
+ghasti
+gucchi
+gucchu
+harami
+haramzade
+hawas
+hawas ke pujari
+hijda
+hijra
+jhant
+jhant chaatu
+jhant ka keeda
+jhant ke baal
+jhant ke pissu
+jhantu
+kamine
+kaminey
+kanjar
+kutta
+kutta kamina
+kutte ki aulad
+kutte ki jat
+kuttiya
+loda
+lodu
+lund
+lund choos
+lund ka bakkal
+lund khajoor
+lundtopi
+lundure
+maa ki chut
+maal
+madar chod
+madarchod
+madhavchod
+mooh mein le
+mutth
+mutthal
+najayaz
+najayaz aulaad
+najayaz paidaish
+pataka
+patakha
+raand
+randaap
+randi
+randi rona
+saala
+saala kutta
+saali kutti
+saali randi
+suar
+suar ke lund
+suar ki aulad
+tatte
+tatti
+teri maa ka bhosada
+teri maa ka boba chusu
+teri maa ki behenchod
+teri maa ki chut
+tharak
+tharki
+tu chuda
+balfasz
+balfaszok
+balfaszokat
+balfaszt
+barmok
+barmokat
+barmot
+barom
+baszik
+bazmeg
+buksza
+bukszák
+bukszákat
+bukszát
+búr
+búrok
+csöcs
+csöcsök
+csöcsöket
+csöcsöt
+fasz
+faszfej
+faszfejek
+faszfejeket
+faszfejet
+faszok
+faszokat
+faszt
+fing
+fingok
+fingokat
+fingot
+franc
+francok
+francokat
+francot
+geci
+gecibb
+gecik
+geciket
+gecit
+kibaszott
+kibaszottabb
+kúr
+kurafi
+kurafik
+kurafikat
+kurafit
+kurvák
+kurvákat
+kurvát
+leggecibb
+legkibaszottabb
+legszarabb
+marha
+marhák
+marhákat
+marhát
+megdöglik
+pele
+pelék
+picsa
+picsákat
+picsát
+pina
+pinák
+pinákat
+pinát
+pofa
+pofákat
+pofát
+pöcs
+pöcsök
+pöcsöket
+pöcsöt
+punci
+puncik
+segg
+seggek
+seggeket
+segget
+seggfej
+seggfejek
+seggfejeket
+seggfejet
+szajha
+szajhák
+szajhákat
+szajhát
+szar
+szarabb
+szarik
+szarok
+szarokat
+szart
+3p
+g スポット
+s & m
+sm
+sm女王
+アジアのかわいい女の子
+アスホール
+アナリングス
+アナル
+いたずら
+イラマチオ
+エクスタシー
+エスコート
+エッチ
+エロティズム
+エロティック
+オーガズム
+オカマ
+おしっこ
+おしり
+オシリ
+おしりのあな
+おっぱい
+オッパイ
+オナニー
+オマンコ
+おもらし
+お尻
+カーマスートラ
+カント
+クリトリス
+グループ・セックス
+グロ
+クンニリングス
+ゲイ・セックス
+ゲイボーイ
+ゴールデンシャワー
+コカイン
+ゴックン
+サディズム
+しばり
+スウィンガー
+スカートの中
+スカトロ
+ストラップオン
+ストリップ劇場
+スラット
+スリット
+セクシーな
+セクシーな 10 代
+セックス
+ソドミー
+ちんこ
+ディープ・スロート
+ディック
+ディルド
+デートレイプ
+デブ
+テレフォンセックス
+ドッグスタイル
+トップレス
+なめ
+ニガー
+ヌード
+ネオ・ナチ
+ハードコア
+パイパン
+バイブレーター
+バック・スタイル
+パンティー
+ビッチ
+ファック
+ファンタジー
+フィスト
+フェティッシュ
+フェラチオ
+ふたなり
+ぶっかけ
+フック
+プリンス アルバート ピアス
+プレイボーイ
+ベアバック
+ペニス
+ペニスバンド
+ボーイズラブ
+ボールギャグ
+ぽっちゃり
+ホモ
+ポルノ
+ポルノグラフィー
+ボンテージ
+マザー・ファッカー
+マスターベーション
+まんこ
+やおい
+やりまん
+ラティーナ
+ラバー
+ランジェリー
+レイプ
+レズビアン
+ローター
+ロリータ
+淫乱
+陰毛
+革抑制
+騎上位
+巨根
+巨乳
+強姦犯
+玉なめ
+玉舐め
+緊縛
+近親相姦
+嫌い
+後背位
+合意の性交
+拷問
+殺し方
+殺人事件
+殺人方法
+支配
+児童性虐待
+自己愛性
+射精
+手コキ
+獣姦
+女の子
+女王様
+女子高生
+女装
+新しいポルノ
+人妻
+人種
+性交
+正常位
+生殖器
+精液
+挿入
+足フェチ
+足を広げる
+大陰唇
+脱衣
+茶色のシャワー
+中出し
+潮吹き女
+潮吹き男性
+直腸
+剃毛
+貞操帯
+奴隷
+二穴
+乳首
+尿道プレイ
+覗き
+売春婦
+縛り
+噴出
+糞
+糞尿愛好症
+糞便
+平手打ち
+変態
+勃起する
+夢精
+毛深い
+誘惑
+幼児性愛者
+裸
+裸の女性
+乱交
+両性
+両性具有
+両刀
+輪姦
+卍
+宦官
+肛門
+膣
+abbuc
+aεeṭṭuḍ
+aḥeččun
+taḥeččunt
+axuzziḍ
+asxuẓeḍ
+qqu
+qquɣ
+qqiɣ
+qqan
+qqant
+tteqqun
+tteqqunt
+aqerqur
+ajeḥniḍ
+awellaq
+iwellaqen
+iḥeččan
+iḥeččunen
+uqan
+taxna
+강간
+개새끼
+개자식
+개좆
+개차반
+거유
+계집년
+고자
+근친
+노모
+니기미
+뒤질래
+딸딸이
+때씹
+또라이
+뙤놈
+로리타
+망가
+몰카
+미친
+미친새끼
+바바리맨
+변태
+병신
+보지
+불알
+빠구리
+사까시
+섹스
+스와핑
+쌍놈
+씨발
+씨발놈
+씨팔
+씹
+씹물
+씹빨
+씹새끼
+씹알
+씹창
+씹팔
+암캐
+애자
+야동
+야사
+야애니
+엄창
+에로
+염병
+옘병
+유모
+육갑
+은꼴
+자위
+자지
+잡년
+종간나
+좆
+좆만
+죽일년
+쥐좆
+직촬
+짱깨
+쪽바리
+창녀
+포르노
+하드코어
+호로
+화냥년
+후레아들
+후장
+희쭈그리
+aardappels afgieten
+achter het raam zitten
+afberen
+aflebberen
+afrossen
+afrukken
+aftrekken
+afwerkplaats
+afzeiken
+afzuigen
+een halve man en een paardekop
+anita
+asbak
+aso
+bagger schijten
+balen
+bedonderen
+befborstel
+beffen
+bekken
+belazeren
+besodemieterd zijn
+besodemieteren
+beurt
+boemelen
+boerelul
+boerenpummel
+bokkelul
+botergeil
+broekhoesten
+brugpieper
+buffelen
+buiten de pot piesen
+da's kloten van de bok
+de ballen
+de hoer spelen
+de hond uitlaten
+de koffer induiken
+del
+de pijp uitgaan
+dombo
+draaikont
+driehoog achter wonen
+drol
+drooggeiler
+droogkloot
+een beurt geven
+een nummertje maken
+een wip maken
+eikel
+engerd
+flamoes
+flikken
+flikker
+gadverdamme
+galbak
+gat
+gedoogzone
+geilneef
+gesodemieter
+godverdomme
+graftak
+gras maaien
+gratenkut
+greppeldel
+griet
+hoempert
+hoer
+hoerenbuurt
+hoerenloper
+hoerig
+hol
+hufter
+huisdealer
+johny
+kanen
+kettingzeug
+klaarkomen
+klerebeer
+klojo
+klooien
+klootjesvolk
+klootoog
+klootzak
+kloten
+knor
+kont
+kontneuken
+krentekakker
+kut
+kuttelikkertje
+kwakkie
+liefdesgrot
+lul
+lul-de-behanger
+lulhannes
+lummel
+mafketel
+matennaaier
+matje
+mof
+muts
+naaien
+naakt
+neuken
+neukstier
+nicht
+oetlul
+opgeilen
+opkankeren
+oprotten
+opsodemieteren
+op z'n hondjes
+op z'n sodemieter geven
+opzouten
+ouwehoer
+ouwehoeren
+ouwe rukker
+paal
+paardelul
+palen
+penoze
+piesen
+pijpbekkieg
+pijpen
+pleurislaaier
+poep
+poepen
+poot
+portiekslet
+pot
+potverdorie
+publiciteitsgeil
+raaskallen
+reet
+reetridder
+reet trappen, voor zijn
+remsporen
+reutelen
+rothoer
+rotzak
+rukhond
+rukken
+schatje
+schijt
+schijten
+schoft
+schuinsmarcheerder
+slempen
+slet
+sletterig
+slik mijn zaad
+snol
+spuiten
+standje
+standje-69
+stoephoer
+stootje
+stront
+sufferd
+tapijtnek
+teef
+temeier
+teringlijer
+toeter
+tongzoeng
+triootjeg
+trottoir prostituée
+trottoirteef
+vergallen
+verkloten
+verneuken
+viespeuk
+vingeren
+vleesroos
+voor jan lul
+voor jan-met-de-korte-achternaam
+watje
+welzijnsmafia
+wijf
+wippen
+wuftje
+zaadje
+zakkenwasser
+zeiken
+zeiker
+zuigen
+zuiplap
+dritt
+drittsekk
+faen
+faen i helvete
+fan
+fanken
+fitte
+forbanna
+forbannet
+forjævlig
+fy faen
+føkk
+føkka
+føkkings
+jævla
+jævlig
+helvete
+helvetet
+kuk
+kukene
+kuker
+morraknuller
+morrapuler
+pakkis
+pikk
+pokker
+ræva
+ræven
+satan
+sinnsykt
+skitt
+sotrør
+ståpikk
+ståpikkene
+ståpikker
+svartheiteste
+burdel
+burdelmama
+chujnia
+ciota
+cipa
+cyc
+dmuchać
+do kurwy nędzy
+dupa
+dupek
+duperele
+dziwka
+fiut
+gówno
+gówno prawda
+huj
+huj ci w dupę
+jajco
+jajko
+ja pierdolę
+jebać
+jebany
+kurwa
+kurwy
+kutafon
+kutas
+lizać pałę
+obciągać chuja
+obciągać fiuta
+obciągać loda
+pieprzyć
+pierdolec
+pierdolić
+pierdolnąć
+pierdolnięty
+pierdoła
+pierdzieć
+pojeb
+pojebany
+popierdolony
+robic loda
+robić loda
+ruchać
+rzygać
+skurwysyn
+sraczka
+srać
+suka
+syf
+wkurwiać
+zajebisty
+aborto
+amador
+ânus
+aranha
+ariano
+balalao
+bicha
+biscate
+bissexual
+boceta
+bosta
+braulio de borracha
+bumbum
+burro
+cabrao
+cacete
+cagar
+camisinha
+caralho
+cerveja
+chochota
+chupar
+cocaína
+coito
+colhoes
+comer
+cona
+consolo
+corno
+cu
+dar o rabo
+dum raio
+esporra
+filho da puta
+foda
+foda-se
+foder
+frango assado
+gozar
+grelho
+heroína
+heterosexual
+homem gay
+homoerótico
+homosexual
+inferno
+lésbica
+mama
+paneleiro
+passar um cheque
+pau
+peidar
+pênis
+pinto
+porra
+puta
+puta que pariu
+puta que te pariu
+queca
+sacanagem
+saco
+torneira
+transar
+vadia
+vai-te foder
+vai tomar no cu
+veado
+vibrador
+xana
+xochota
+arsle
+brutta
+discofitta
+dra åt helvete
+fitta
+fittig
+för helvete
+hård
+jävlar
+knulla
+kuksås
+kötthuvud
+köttnacke
+moona
+moonade
+moonar
+moonat
+mutta
+olla
+pitt
+prutt
+pök
+runka
+röv
+rövhål
+rövknulla
+skita
+skit ner dig
+skäggbiff
+snedfitta
+snefitta
+stake
+subba
+sås
+sätta på
+tusan
+กระดอ
+กระเด้า
+กระหรี่
+กะปิ
+กู
+ขี้
+ควย
+จิ๋ม
+จู๋
+เจ๊ก
+เจี๊ยว
+ดอกทอง
+ตอแหล
+ตูด
+น้ําแตก
+มึง
+แม่ง
+เย็ด
+รูตูด
+ล้างตู้เย็น
+ส้นตีน
+สัด
+เสือก
+หญิ��ชาติชั่ว
+หลั่ง
+ห่า
+หํา
+หี
+เหี้ย
+อมนกเขา
+ไอ้ควาย
+am
+amcığa
+amcığı
+amcığın
+amcık
+amcıklar
+amcıklara
+amcıklarda
+amcıklardan
+amcıkları
+amcıkların
+amcıkta
+amcıktan
+amı
+amlar
+çingene
+Çingenede
+Çingeneden
+Çingeneler
+Çingenelerde
+Çingenelerden
+Çingenelere
+Çingeneleri
+Çingenelerin
+Çingenenin
+Çingeneye
+Çingeneyi
+göt
+göte
+götler
+götlerde
+götlerden
+götlere
+götleri
+götlerin
+götte
+götten
+götü
+götün
+götveren
+götverende
+götverenden
+götverene
+götvereni
+götverenin
+götverenler
+götverenlerde
+götverenlerden
+götverenlere
+götverenleri
+götverenlerin
+kaltağa
+kaltağı
+kaltağın
+kaltak
+kaltaklar
+kaltaklara
+kaltaklarda
+kaltaklardan
+kaltakları
+kaltakların
+kaltakta
+kaltaktan
+orospu
+orospuda
+orospudan
+orospular
+orospulara
+orospularda
+orospulardan
+orospuları
+orospuların
+orospunun
+orospuya
+orospuyu
+otuz birci
+otuz bircide
+otuz birciden
+otuz birciler
+otuz bircilerde
+otuz bircilerden
+otuz bircilere
+otuz bircileri
+otuz bircilerin
+otuz bircinin
+otuz birciye
+otuz birciyi
+saksocu
+saksocuda
+saksocudan
+saksocular
+saksoculara
+saksocularda
+saksoculardan
+saksocuları
+saksocuların
+saksocunun
+saksocuya
+saksocuyu
+sıçmak
+sik
+sike
+siker sikmez
+siki
+sikilir sikilmez
+sikin
+sikler
+siklerde
+siklerden
+siklere
+sikleri
+siklerin
+sikmek
+sikmemek
+sikte
+sikten
+siktir
+siktirir siktirmez
+taşağa
+taşağı
+taşağın
+taşak
+taşaklar
+taşaklara
+taşaklarda
+taşaklardan
+taşakları
+taşakların
+taşakta
+taşaktan
+yarağa
+yarağı
+yarağın
+yarak
+yaraklar
+yaraklara
+yaraklarda
+yaraklardan
+yarakları
+yarakların
+yarakta
+yaraktan
+13.
+13点
+三级片
+下三烂
+下贱
+个老子的
+九游
+乳
+乳交
+乳头
+乳房
+乳波臀浪
+交配
+仆街
+他奶奶
+他奶奶的
+他奶娘的
+他妈
+他妈ㄉ王八蛋
+他妈地
+他妈的
+他娘
+他马的
+你个傻比
+你他马的
+你全家
+你奶奶的
+你她马的
+你妈
+你妈的
+你娘
+你娘卡好
+你娘咧
+你它妈的
+你它马的
+你是鸡
+你是鸭
+你马的
+做爱
+傻比
+傻逼
+册那
+军妓
+几八
+几叭
+几巴
+几芭
+刚度
+刚瘪三
+包皮
+十三点
+卖B
+卖比
+卖淫
+卵
+卵子
+双峰微颤
+口交
+口肯
+叫床
+吃屎
+后庭
+吹箫
+塞你公
+塞你娘
+塞你母
+塞你爸
+塞你老师
+塞你老母
+处女
+外阴
+大卵子
+大卵泡
+大鸡巴
+奶
+奶奶的熊
+奶子
+奸
+奸你
+她妈地
+她妈的
+她马的
+妈B
+妈个B
+妈个比
+妈个老比
+妈妈的
+妈比
+妈的
+妈的B
+妈逼
+妓
+妓女
+妓院
+妳她妈的
+妳妈的
+妳娘的
+妳老母的
+妳马的
+姘头
+姣西
+姦
+娘个比
+娘的
+婊子
+婊子养的
+嫖娼
+嫖客
+它妈地
+它妈的
+密洞
+射你
+小乳头
+小卵子
+小卵泡
+小瘪三
+小肉粒
+小骚比
+小骚货
+小鸡巴
+小鸡鸡
+屁眼
+屁股
+屄
+屌
+干x娘
+干七八
+干你
+干你妈
+干你娘
+干你老母
+干你良
+干妳妈
+干妳娘
+干妳老母
+干妳马
+干您娘
+干机掰
+干死CS
+干死GM
+干死你
+干死客服
+幹
+强奸
+强奸你
+性
+性器
+性无能
+性爱
+情色
+想上你
+懆您妈
+懆您娘
+懒8
+懒八
+懒叫
+懒教
+成人
+我操你祖宗十八代
+扒光
+打炮
+打飞机
+抽插
+招妓
+插你
+插死你
+撒尿
+操你
+操你全家
+操你奶奶
+操你妈
+操你娘
+操你祖宗
+操你老妈
+操你老母
+操妳
+操妳全家
+操妳妈
+操妳娘
+操妳祖宗
+操机掰
+操比
+操逼
+放荡
+日他娘
+日你
+日你妈
+日你老娘
+日你老母
+日批
+月经
+机八
+机巴
+机机歪歪
+杂种
+浪叫
+淫
+淫妇
+淫棍
+淫水
+淫秽
+淫荡
+淫西
+湿透的内裤
+激情
+灨你娘
+烂货
+烂逼
+爛
+狗屁
+狗日
+狗狼养的
+玉杵
+王八蛋
+瓜娃子
+瓜婆娘
+瓜批
+瘪三
+白烂
+白痴
+白癡
+祖宗
+私服
+笨蛋
+精子
+老二
+老味
+老母
+老瘪三
+老骚比
+老骚货
+肉壁
+肉棍子
+肉棒
+肉缝
+肏
+肛交
+肥西
+色情
+花柳
+荡妇
+賤
+贝肉
+贱B
+贱人
+贱货
+贼你妈
+赛你老母
+赛妳阿母
+赣您娘
+轮奸
+迷药
+逼
+逼样
+野鸡
+阳具
+阳萎
+阴唇
+阴户
+阴核
+阴毛
+阴茎
+阴道
+阴部
+雞巴
+靠北
+靠母
+靠爸
+靠背
+靠腰
+驶你公
+驶你娘
+驶你母
+驶你爸
+驶你老师
+驶你老母
+骚比
+骚货
+骚逼
+鬼公
+鸡8
+鸡八
+鸡叭
+鸡吧
+鸡奸
+鸡巴
+鸡芭
+鸡鸡
+龟儿子
+龟头
+𨳒
+陰莖
+㞗
+尻
+𨳊
+鳩
+𡳞
+𨶙
+撚
+𨳍
+柒
+閪
+咸家鏟
+冚家鏟
+咸家伶
+冚家拎
+笨實
+粉腸
+屎忽
+躝癱
+你老闆
+你老味
+你老母
+硬膠
+
+# Writing
+
+A war broke out between the Birds and Beasts after the Geese had suffered persecution at the hands of the Foxes, and the Eagle and Owl had hunted Hare and Mice. The Battle was disastrous, with many creatures dying. The Bats, a very politic race, initially sided with the Birds, but when the Beasts began to gain ground, they switched sides. Both sides were angry at the Bats' deceit and made common cause to drive them out. As a result, the Bats now hide in dark towers and ruins, coming out only at night, proving that the deceitful have no friends.
+Mr. Scalper is a character delineator at a newspaper called The Daily Eclipse. Late at night, he is all alone in the reporters' room and goes back and forth between writing character analyses of subscribers who sent handwriting samples and drinking from a tall black bottle of liquor to stimulate his intellect. Outside, a policeman patrols the street, lamenting the loneliness of his job and writing in his notebook in the light of the gas lamp. The policeman takes notice of a suspicious individual and of a Chinese person returning home late from work. Feeling inspired by the presence of Mr. Scalper, the policeman writes a poetic monologue in his notebook. Mr. Scalper, in turn, encourages the policeman by taking him a drink. Both characters benefit from a shared moment of human connection and reflect on the solace brought by their trade.
+After receiving a letter from a correspondent which he reads with satisfaction, Mr. Scalper decides to write a separate, private letter to a woman called Aunt Dorothea as well as a printed version of the letter he received. Policeman Hogan interrupts this process to write his own chronicle, causing Mr. Scalper to lower the bottle he had been using to help him write. To afford Hogan the same opportunity, Mr. Scalper decides not to haul the bottle up immediately and attempts to write another character. Upon reading the corresponding letter, Mr. Scalper is visibly affected and decides to haul up the bottle before Hogan can get a taste for liquor. However, his efforts are unsuccessful as Hogan has fallen asleep while still holding the bottle, and Mr. Scalper instead turns back to finish his task. After filling the column with an imaginary character, Mr. Scalper puts on his hat and coat and goes home, feeling satisfied with his pay.
+After insisting that he wanted to marry Myrtle, Gus got permission to take her out on the condition he would behave himself. He immediately began to make moves to get close to her, eventually getting close enough to hold hand and tell her fortune within eight minutes. He demanded for Fred and Eustace to provide the music for their date, and when finished outside, he asked for another piece and Myrtle chose one. Seeing him so close to Myrtle made them angry so Fred and Eustace left without saying goodbye. His persistence eventually won Myrtle's affection, and they were married with Fred and Eustace as ushers. Ultimately, the message is that to get a fair trial, you need a pace-maker.
+Despite its size and strength, an eagle was unable to protect its eggs from a relentless beetle. After multiple attempts by the eagle to protect the eggs, the beetle reveals why it was so determined. Jupiter acknowledges the beetle's cause and, due to the situation, commands that the beetle be protected and granted a safe place to sleep. This story serves as a reminder that even the smallest and weakest can find a way to get revenge, when wronged.
+The Mice held a meeting to devise a plan to escape their enemy, the Cat. They considered several ideas but none were deemed appropriate. Then, a young Mouse proposed that a bell be placed around the Cat's neck, so when its ringing was heard, the Mice would know to run away. Everyone was pleased with this plan, but the difficulty was who would put the bell on the Cat in the first place. Ultimately, the proposing of a plan and its execution are two very different things.
+For the past two weeks, The Rolling Stone missed two issues due to the editor becoming sick with la grippe and measles. To apologize, everybody's term of subscription will be extended to make up for the missed issues. The editor is now recovering but is being careful to not relapse due to the deleterious after-effects of the measles. Anyone not getting their paper regularly should bring a delicacy for the ill editor.
+The Cat and Monkey were great friends living together as pets and always getting themselves into mischief, like trying to get chestnuts from the fire. The monkey convinced the Cat to get them, but he ate them as soon as she pulled them out, singeing her paw in the process. When the master came in, they both ran away, and from then on the Cat stayed away from the Monkey, hunting mice and rats instead.
+Yeah...so, my day wasn't all that great. Thanks to Andrew sliding across the stinking floor this morning, I have a huge bruise on my back. Got my schedule...it's ok, but I'm going to try to switch lunch and health, since I got really light-headed and sick by the end of the day. Eek, it wasn't good. Band and music theory stayed the same, so my first two classes were a cinch. Sometimes in band, Dan, and Peter, and the rest of them really get to me. Today was sort of one of those days. I really hadn't had a good start of the day, and I just didn't want to put up with them criticizing everything. Yeah...so, I'm not Tito...give me a break! It's not even something I'm going to pursue later on in life, I'm just having fun now, except, it's difficult for me to have fun when I have all these jerks sitting beside me. Arg. Then...third hour Chem, which is a huge change for me, since I used to have it eighth hour. It's not too bad actually. Mr. Kordalewski (RAR! Stupid long named teachers!) seems pretty nice, and he's got the funniest accent. So, it's all good! I'm not a big fan of Chem though, soo...it kind of stinks, but Diane is in my class!!! I was so excited to see her! I was like...AHHHH DIANE! YAY! It was quite exciting. I sit in the back row corner...again, like last semester. What is it with me and back row corners?? Am I really THAT bad to look at? I suppose...but, oh well. Then lunch, which sucks...fourth hour...royally sucks!!! No one's in it, and the lunch is too early. I'm going to try to get it switched tomorrow. I hope I can. I had to sit next to Pez for the first part...which was ok, but...the kid doesn't know when to stop talking. Like...seriously, he's really nice and all, but...I don't know, I just wish he knew when to stop talking more. Then halfway through the lunch hour, I met up with Kelly and Kathryn!!! YES! Thank you God...if I can't switch it, I still have two of my best friends. So, we just walked around and talked, and...it was fun. I kind of miss seeing them sometimes. We all went to this really dumb movie Friday night...but, without Nikki, and I miss her too. I really miss being around with a lot of my friends. I see band people every day, but I get the feeling they aren't really
+my friends. They pick on me a lot, and at first I just assumed it was all fun and games, but now...I sometimes feel like they all really don't like me. So...it's nice to hang out with non-band kids. Nikki's cheerleading squad made Nationals, which of course...is awesome! People laugh at me because one of my best friends is a cheerleader, and I just laugh right back, because they're missing out on a truly wonderful person! I miss Carson too. I know I see her like...every day, and I talk to her, but I kind of miss the way things used to be. Malevalent Sisters!! Carson, Nikki, and me...it was so cool....I just really miss Junior High sometimes. I can remember when I was 8, and I was REFUSING to turn 9. I actually refused! I kind of wish those days were back sometimes. Scott and I had a long conversation about this the other day, and...he reminded me of what fun it was to be younger. How I didn't have to worry about drinking, and all the stuff I'm completely not into! I miss my little group of friends...we used to do EVERYTHING together...and now it's just all breaking apart. Joanne's going to England, Carson's already gone from the group (thank goodness I still keep in close contact with her) and Nikki goes to Benet. I just...miss the old days. Yeah, anyway....sorry....I just kept writing and writing, and I got off track. 5th hour, I had Speech, which was totally neat! I don't care what anyone says about her perkyness, I love Ms. V! Or as we call her...V-diddy! She's just so enthusiastic about teaching...like she actually wants to be there! She reminds me of Mr. Doman. I guess it's really easy to get a good grade in Ms. V's class, thank goodness, since I'm reallly nervous about giving speeches. Will is in my class :) I like him a lot. He's such a cool kid. He always wears this batman shirt that I love, and he's always really nice to me. He always seems kind of sad about something though...and it just, really reminds me of Kari's death. There's another person I miss a lot. Wow...I miss a lot of people right now....even Christy. Yeah...she did kiss Ryan...and yeah...I did dump his sorry butt, but...I still kind of miss her. She was just...so good to talk to. There's no one right now, that I really feel I could tell anything in the world to...like...just anything, and everything that's on my mind, and I wish there was. Just turned on some Dave Matthews Band...I hope it puts me in a better mood. Honestly...I know it wont, but...I have to try, right?? Wow, I haven't written this much...possibly ever, and I've just gotten a little more than halfway through my day. I don't know what's up with me. I just...am thinking of how I wish things were, and, how fast things are changing. I mean...I'm already 37.5% of my way through high scool. That's pretty depressing, especially since I have no idea what I want to do after High School. *Sigh* Well...yeah, back to speech, not much more to tell. I have a one minute speech to do tomorrow about myself. I think I'm going to talk about being albino. I hope it interests people. It's not something you hear talked about every day, soo...yeah. Yeah....health....eek...scary class. Yikes...not much more to say than that, except...I have Stevey in my class!!! AHHH! Yay! Steve Zimnie...if you've never met the kid, meet him. He's the coolest ever. He's really nice, and he's really really cute. :) His girlfriend's lucky. Haha...and, I realized how bad that may have sounded...no, I don't like Steve as more than a friend, he's just really cool, so he deserved mentioning. I don't mention people I like...or do I?? Hmmm.... Ummm...ok, what's next? Math...yes, wont go into great detail about that, except, it's kind of cool since Taylor's in my math class, which is excellent, because Taylor is definitely the coolest. She's such a sweet person. I wish I could be more like her sometimes. Then...American Gov.!! YAY! I have lots of people in my class...including Andre Cherry...haha...I kissed that kid when I was like...5. Ah...good times, good times. Kathryn's in my class, which is awesome, and so it Meredith, I don't care what ANYONE says about her, she's always really nice to me, and I think she's a cool person who has a lot to offer. Also...I have the coolest teacher, Mr. Albinak. He's such a great teacher. Kelly C. has him too, except...different period. And...yes, that was my day. It ended alright, but, I still am hoping to switch my lunch periods. I REALLY hope they let me. Anyway....I'm sick of typing, and I'm getting restless, so, I think I'll go read for a bit, and...maybe write more later. I'm actually writing down what I feel on here, which is kind of surprising. I don't usually actually write what I'm feeling. Oh yeah...I guess there were like 20-25 bands in our section on Saturday...so, either we really didn't do as bad as I thought, or...the other bands were atrocious. I haven't gotten to talk to Scott about Winter yet, and arrange things. I'm pretty sure we're going to Kathryn's to eat, then to the dance, and possibly Joanne's after, but...who knows? I think I'm going to go for a little while...I'm kind of sad right now... Oh well...I hope everyone has a lovely evening. :)
+اندلعت حرب بين الطيور والوحوش بعد أن عانى الإوز من الاضطهاد على يد الثعالب، وقام النسر والبومة باصطياد الأرنب والفئران. كانت المعركة كارثية، حيث ماتت العديد من المخلوقات. انحازت الخفافيش، وهي عرق سياسي للغاية، في البداية إلى جانب الطيور، ولكن عندما بدأت الوحوش في اكتساب الأرض، غيروا مواقفهم. كان كلا الجانبين غاضبين من خداع الخفافيش واتفقا على قضية مشتركة لطردهم. ونتيجة لذلك، يختبئ الخفافيش الآن في الأبراج المظلمة والأطلال، ولا يخرجون إلا في الليل، مما يثبت أن المخادعين ليس لديهم أصدقاء.
+السيد سكالبر هو محدد الشخصية في صحيفة تسمى The Daily Eclipse. في وقت متأخر من الليل، يكون بمفرده في غرفة المراسلين ويتنقل ذهابًا وإيابًا بين كتابة تحليلات شخصية المشتركين الذين أرسلوا عينات من الكتابة اليدوية والشرب من زجاجة خمور سوداء طويلة لتحفيز ذكائه. في الخارج، يقوم شرطي بدوريات في الشارع، وهو يندب الوحدة التي يعاني منها في وظيفته ويكتب في دفتر ملاحظاته على ضوء مصباح الغاز. يلاحظ الشرطي شخصًا مشبوهًا وشخصًا صينيًا يعود إلى المنزل متأخرًا من العمل. يشعر الشرطي بالإلهام من وجود السيد سكالبر، فيكتب مونولوجًا شعريًا في دفتر ملاحظاته. يقوم السيد سكالبر بدوره بتشجيع الشرطي من خلال تناول مشروب له. تستفيد كلتا الشخصيتين من لحظة مشتركة من التواصل الإنساني وتتأملان في العزاء الذي تجلبه تجارتهما.
+بعد تلقي رسالة من أحد المراسلين والتي قرأها بارتياح، قرر السيد سكالبر أن يكتب رسالة خاصة منفصلة إلى امرأة تدعى العمة دوروثيا بالإضافة إلى نسخة مطبوعة من الرسالة التي تلقاها. يقاطع الشرطي هوجان هذه العملية لكتابة سجل الأحداث الخاص به، مما دفع السيد سكالبر إلى خفض الزجاجة التي كان يستخدمها لمساعدته في الكتابة. لمنح هوجان نفس الفرصة، قرر السيد سكالبر عدم سحب الزجاجة على الفور وحاول كتابة شخصية أخرى. عند قراءة الرسالة المقابلة، يبدو أن السيد سكالبر متأثر بشكل واضح ويقرر سحب الزجاجة قبل أن يتمكن هوجان من تذوق المشروب الكحولي. ومع ذلك، فإن جهوده لم تنجح حيث نام هوجان بينما كان لا يزال ممسكًا بالزجاجة، وبدلاً من ذلك عاد السيد سكالبر لإنهاء مهمته. بعد ملء العمود بشخصية خيالية، يرتدي السيد سكالبر قبعته ومعطفه ويعود إلى المنزل وهو يشعر ب��لرضا عن راتبه.
+بعد إصراره على رغبته في الزواج من ميرتل، حصل جوس على الإذن بإخراجها بشرط أن يتصرف على طبيعته. بدأ على الفور في اتخاذ خطوات للاقتراب منها، واقترب في النهاية بما يكفي ليمسك بيدها ويخبرها بثروتها في غضون ثماني دقائق. طالب فريد ويوستاس بتقديم الموسيقى لموعدهما، وعندما انتهى بالخارج، طلب مقطوعة أخرى واختارت ميرتل واحدة. إن رؤيته قريبة جدًا من ميرتل جعلتهم غاضبين لذا غادر فريد ويوستاس دون أن يقولوا وداعًا. في النهاية، أكسب إصراره عاطفة ميرتل، وتزوجا من فريد ويوستاس كمرشدين. في نهاية المطاف، الرسالة هي أنه للحصول على محاكمة عادلة، فأنت بحاجة إلى جهاز تنظيم ضربات القلب.
+على الرغم من حجمه وقوته، لم يتمكن النسر من حماية بيضه من خنفساء لا هوادة فيها. وبعد عدة محاولات من النسر لحماية البيض، تكشف الخنفساء سبب عزمها على ذلك. يقر كوكب المشتري بسبب الخنفساء، وبسبب الموقف، يأمر بحماية الخنفساء ومنحها مكانًا آمنًا للنوم. هذه القصة بمثابة تذكير بأنه حتى الأصغر والأضعف يمكنهم إيجاد طريقة للانتقام عندما يتعرضون للظلم.
+عقدت الفئران اجتماعًا لوضع خطة للهروب من عدوهم القط. لقد نظروا في العديد من الأفكار ولكن لم يتم اعتبار أي منها مناسبًا. بعد ذلك، اقترح فأر صغير أن يتم وضع جرس حول رقبة القطة، بحيث عندما يُسمع رنينه، ستعرف الفئران أنها تهرب. كان الجميع سعداء بهذه الخطة، لكن الصعوبة كانت تكمن في من سيضع الجرس على القطة في المقام الأول. في نهاية المطاف، اقتراح الخطة وتنفيذها أمران مختلفان تمامًا.
+على مدى الأسبوعين الماضيين، أضاعت مجلة رولينج ستون عددين بسبب إصابة المحرر بمرض الحصبة والحصبة. للاعتذار، سيتم تمديد فترة الاشتراك للجميع للتعويض عن القضايا الفائتة. يتعافى المحرر الآن ولكنه يحرص على عدم الانتكاس بسبب الآثار الضارة للحصبة. يجب على أي شخص لا يحصل على ورقته بانتظام أن يحضر طعامًا شهيًا للمحرر المريض.
+كان القط والقرد صديقين حميمين يعيشان معًا كحيوانات أليفة ويوقعان نفسيهما دائمًا في الأذى، مثل محاولة إخراج الكستناء من النار. أقنع القرد القطة بإحضارهم، لكنه أكلهم بمجرد أن أخرجتهم، مما أدى إلى حرق مخلبها في هذه العملية. عندما دخل السيد، هرب كلاهما، ومنذ ذلك الحين ابتعد القط عن القرد، واصطاد الفئران والجرذان بدلاً من ذلك.
+ستجد أدناه بعض مقاطع الفيديو الرائعة التي ستشجعك وتدربك وتبنيك على الاستماع إلى الله والقدرة على السماح له بتحقيق خطته في حياتك. شيء جديد سيساعدك على سماع صوت الله! كيفية فهمها وتقسيمها بشكل صحيح وكيف تنطبق على الحياة! في هذا التعليم المهم يكشف تيري عن التمييز الواضح بين الروح والنفس ومدى أهمية أن نتعلم كيفية العمل بالروح وعدم الانخداع. إنها مسألة خطيرة يجب إعادة النظر فيها مهما كان مستوى إيمانك ونضجك. الزواج وكيف ينطبق على الروح والنفس! في هذا الفصل التنويري، يكشف تيري عن رؤية أساسية تساعدنا على تمييز الروح مقابل الروح بشكل أفضل كما تنعكس في علاقة الزواج من الطبيعة البديهية، والمكون العاطفي للمرأة وجانب القوة للذكر في الخضوع للرب. . في هذا التعليم الذي يفتح العين، يشارك تيري كيف أن خيمة الاجتماع تمثل جسد وروح وروح الإنسان وكيف تنطبق على مسيرتنا الروحية. تساعدك حزمة الخلاص الكاملة هذه على إرشادك خلال ما يمكنك القيام به لتحرير نفسك من القوة الخفية المدفونة في أعماق روحك والتي تعيقك عن السير في الامتلاء الذي دفعه الله لك لكي تمشي فيه. في فيديو اليوم، يحدد تيري الخلاص الأفضل والأشياء التي تعترض طريق خلاص أرواحنا والطرق التي يمكننا من خلالها زيادة نضجنا الروحي.
+تعاونت UNStudio مع HPP Architects لإنشاء اتحاد (UNS + HPP) لتنفيذ المراحل التالية من مشروعهم الفائز في مسابقة التصميم المعماري لـ FOUR فرانكفورت. ألق نظرة على القصة الكاملة بعد القفزة. من المهندسين المعماريين: تم شراء الموقع المركزي الذي تبلغ مساحته 16000 متر مربع من قبل شركة التطوير العقاري Groß & Partner - التي ستقوم بتنفيذ تطوير المشروع - في عام 2015. يقع الموقع في قلب المدينة، وقد تم تصميمه لا يمكن الوصول إليها تمامًا خلال الـ 45 عامًا الماضية. والآن ستغير أربعة أبراج شاهقة جديدة أفق فرانكفورت من الجو، بينما ستعزز حيويتها على الأرض. وسيؤدي تطوير هذه الأبراج، التي يصل ارتفاعها إلى 228 مترًا، إلى فتح شوارع جديدة لإنشاء حي متعدد الاستخدامات وحيوي داخل المدينة، يجمع بين مزيج صحي من العمل والمعيشة والاسترخاء والاستجمام. يسمح اختيار البرامج بالانتقال السلس من منطقة التسوق في فرانكفورت إلى شرق Roßmarkt، إلى أبراج المكاتب الشاهقة المتجمعة حول Park Taunusanlage. مع مفهوم تطوير فريد من نوعه في أوروبا، يجمع مشروع FOUR فرانكفورت بين المرافق التي ستنشئ حيًا جديدًا حيويًا لفرانكفورت وزوارها وسكانها (المستقبليين). سيتم دمج المجمع الشاهق الجديد في هيكل المدينة المتوسع من خلال دمج واجهات Junghofstraße المدرجة في قائمة التراث في التصميم ومن خلال جعل مبنى قاعدة متعدد الطوابق هو العنصر المتصل بالموقع بأكمله. وفقًا للتقييم الذي أجرته لجنة تحكيم المسابقة، يمكن العثور على الجودة الفريدة لهذا الربع في التطوير العام وقيمة وسائل الراحة. وبالتالي فإن التطوير الجديد سيخلق مساحات متصلة وأسطح وممرات وممرات يمكن الوصول إليها. سيتم فتح المبنى الحالي في Junghofstraße لتعزيز المسارات المحيطة وضمان مستوى عالٍ من إمكانية الوصول. سيؤدي ذلك إلى إنشاء حي متعدد الاستخدامات ومتنوع يضم 50% من المساحات المكتبية، و30% من أماكن الإقامة (بما في ذلك الإسكان المدعوم)، بالإضافة إلى مساحات البيع بالتجزئة والمطاعم والفنادق. ومن المتوقع أن يتم الانتهاء من أربعة فرانكفورت في عام 2023.
+2 نيو إنجلاند NE 16 1 لعب -1 ياردة 0:07 نهاية الشوط الأول. 4 Pittsburgh Pit 37 2 مسرحية -1 ياردة 1:01 نهاية اللعبة. 2 8 مقابل 29 1:57 بيت بليير 0 Bas Draw/SI 4-3 sZ Run-Harris, F.
+البائعون غير المقيمين (مثل الأجانب الذين يعيشون في الخارج والمواطنين اليابانيين الذين يعيشون في الخارج). المشترين، سواء المقيمين المحليين أو الأجانب، الذين يشترون العقارات في اليابان من شخص غير مقيم. إذا كان بائع العقارات اليابانية غير مقيم، اعتمادًا على الوضع، يجب على المشتري احتجاز 10.21% من سعر البيع ودفعها إلى مكتب الضرائب، مع دفع نسبة 89.79% المتبقية للبائع. يتحمل المشتري مسؤولية دفع نسبة 10.21% إلى مكتب الضرائب بحلول اليوم العاشر من الشهر التالي للمعاملة. يقع على عاتقك واجب سداد هذه الدفعة إلى مكتب الضرائب بحلول الموعد النهائي. إذا كنت تعيش حاليًا في الخارج، فستحتاج إلى تعيين ممثل ضريبي أو محاسب لدفع هذا المبلغ نيابةً عنك. ستحتاج إلى تعيين ممثل ضريبي في اليابان لتقديم إقرار ضريبي نهائي حتى يتم إرجاع الباقي إليك (مخصومًا منه أي ضرائب قد تكون مستحقة). *إذا كان د��ع الودائع والمدفوعات متوسطة الأجل يستوفي أيضًا شروط ضريبة الاستقطاع، فيجب حجب الضريبة ودفعها من قبل المشتري عند كل دفعة. تم تقديم المعلومات المذكورة أعلاه كدليل عام فقط. لمزيد من التفاصيل حول هذه الضريبة، وللأسئلة الضريبية التفصيلية الأخرى، يرجى استشارة مكتب الضرائب أو أحد المتخصصين...نعم... لذا، لم يكن يومي رائعًا. بفضل انزلاق أندرو على الأرضية النتنة هذا الصباح، أعاني من كدمة كبيرة في ظهري. حصلت على جدول أعمالي...لا بأس، ولكنني سأحاول تبديل الغداء والصحة، يا سيدي
+鹅遭到狐狸的迫害,老鹰和猫头鹰猎杀了野兔和老鼠,鸟类和野兽之间爆发了战争。 这场战斗是灾难性的,许多生物死亡。 蝙蝠是一个非常政治化的种族,最初站在鸟类一边,但当野兽开始取得进展时,他们改变了立场。 双方都对蝙蝠队的欺骗行为感到愤怒,并共同致力于将他们驱逐出去。 结果,蝙蝠现在躲在黑暗的塔楼和废墟里,只在晚上出来,证明骗子没有朋友。
+黄牛先生是一家名为《每日日食》的报纸的人物塑造者。 深夜,他一个人呆在记者室里,来来回回地对寄来笔迹样本的订阅者进行性格分析,喝一大瓶黑酒来激发自己的智力。 外面,一名警察在街上巡逻,一边感叹工作的孤独,一边在煤气灯的灯光下写着笔记本。 警察注意到一名可疑人员和一名下班晚归的中国人。 警察受到黄牛先生的存在的启发,在笔记本上写下了一段诗意的独白。 黄牛先生则给警察喝了一杯酒以鼓励他。 两个角色都受益于共同的人际关系时刻,并反思了他们的贸易带来的安慰。
+斯卡珀先生收到一封来自记者的信,他满意地读完后,决定给一位名叫多萝西娅阿姨的女士单独写一封私人信,并打印出他收到的信的印刷版。 警察霍根打断了这个过程,去写自己的编年史,导致黄牛先生放下了他一直用来帮助他写的瓶子。 为了给霍根同样的机会,斯卡珀先生决定不立即把瓶子拖起来,并尝试写另一个角色。 读完相应的信件后,黄牛先生显然受到了影响,并决定在霍根品尝烈酒之前把瓶子拿起来。 然而,他的努力没有成功,霍根拿着瓶子睡着了,黄牛先生转而回去完成他的任务。 在专栏中填满了一个虚构的角色后,黄牛先生戴上帽子,穿上外套,回家了,对自己的报酬感到满意。
+在坚持要与默特尔结婚后,格斯得到了允许带她出去,但条件是他要表现得规矩。 他立即开始做出靠近她的举动,最终在八分钟内拉近了她的手并算命。 他要求弗雷德和尤斯塔斯为他们的约会提供音乐,当他在外面完成时,他要求另一首曲子,默特尔选择了一首。 看到他离默特尔如此之近,他们很生气,所以弗雷德和尤斯塔斯不辞而别。 他的坚持最终赢得了默特尔的喜爱,他们在弗雷德和尤斯塔斯担任引座员的情况下结婚了。 最终,我们传达的信息是,为了获得公平的审判,您需要一个起搏器。
+尽管鹰体型庞大、力量强大,但它却无法保护自己的蛋免受无情甲虫的侵害。 在老鹰多次尝试保护蛋之后,甲虫揭示了它为何如此坚定。 朱庇特承认了甲虫的原因,并根据情况,命令保护甲虫并为其提供安全的睡眠场所。 这个故事提醒我们,即使是最小和最弱的人,在受到委屈时也能找到报复的方法。
+老鼠们召开了一次会议,制定了一个逃离敌人猫的计划。 他们考虑了几个想法,但没有一个被认为是合适的。 然后,一只小老鼠提议在猫的脖子上挂一个铃铛,这样当听到铃铛响时,老鼠就会知道逃跑。 每个人都对这个计划感到满意,但困难在于谁首先给猫按响铃。 最终,计划的提出和计划的执行是两件截然不同的事情。
+在过去的两周里,由于编辑感染了流行性感冒和麻疹,《滚石》杂志错过了两期。 抱歉,每个人的订阅期限都将延长,以弥补错过的问题。 编辑现在正在康复,但由于麻疹的有害后遗症,他正在小心不要复发。 任何不能定期收到论文的人都应该为生病的编辑带来美味佳肴。
+猫和猴子是好朋友,作为宠物生活在一起,但总是搞恶作剧,比如试图从火中取栗子。 猴子说服了猫去拿它们,但当她把它们拿出来时,猴子就把它们吃掉了,并在此过程中烧焦了她的爪子。 当主人进来时,他们都逃跑了,从此猫远离了猴子,而是去捕老鼠。
+是的……所以,我的日子不太好。 感谢安德鲁今天早上在发臭的地板上滑行,我的背上有很大的瘀伤。 我的日程安排好了……没关系,但我会尝试改变午餐和健康
+下面你会发现一些很棒的视频,它们会鼓励你、训练你、帮助你聆听上帝的声音,并让他在你的生活中实现他的计划。 新的东西将帮助您听到神的声音! 如何理解并正确划分它以及它如何应用于生活! 在这个重要的教导中,特里揭示了精神与灵魂之间的明显区别,以及我们学习如何在精神中运作而不被欺骗是多么重要。 这是一个严肃的问题,无论你的信仰和成熟程度如何,都必须进行审查。 婚姻及其如何应用于精神和灵魂! 在这个启发性的课程中,特里揭示了一个关键的见解,可以帮助我们更好地辨别精神与灵魂,因为它反映在婚姻关系中,从直觉本质,女人的情感成分和男人顺服主的力量方面 。 在这个令人大开眼界的教学中,特里分享了会幕如何代表人的身体、灵魂和精神,以及它如何应用于我们的精神行走。 这个完整的拯救包可以帮助你了解如何才能将自己从深埋在灵魂深处的隐藏强迫中解放出来,这些强迫阻碍你走在上帝为你付出代价的丰盛中。在今天的视频中,特里定义了拯救 更好的事情以及阻碍我们灵魂得救的事情以及我们可以提高灵性成熟度的方法。
+UNStudio 与 HPP Architects 联手创建了一个联盟 (UNS + HPP),以实施其在 FOUR 法兰克福建筑设计竞赛中获胜项目的下一阶段。 跳转后看一下完整的故事。 建筑师介绍:位于市中心的 16,000 平方米场地早在 2015 年就被 Groß & Partner 房地产开发公司购买,该公司将负责该项目的开发。该场地位于城市的核心地带,一直被 过去 45 年来完全无法进入。 现在,四座新的高层塔楼将从空中改变法兰克福的天际线,同时在地面上培养其活力。 这些塔楼的开发高度将达到 228 米,将开辟新的街道,打造一个多功能、充满活力的市中心区,将工作、生活、休闲和娱乐健康地结合在一起。 项目的选择使得从法兰克福购物区到 Roßmarkt 东部,再到 Taunusanlage 公园周围的高层办公楼顺利过渡。 法兰克福四号项目采用欧洲独有的开发理念,汇集了各种设施,将为法兰克福、游客和(未来)居民建立一个充满活力的新社区。 新的高层综合体将通过将荣霍夫大街列入遗产名录的外墙纳入设计,并使多层基础建筑成为整个场地的连接元素,从而融入不断扩大的城市结构。 根据竞赛评审团的评估,该季度的独特品质体现在其公共发展和舒适价值。 因此,新开发项目将创造互联空间、无障碍屋顶、步道和通道。 Junghofstraße 上的现有街区将被开放,以加强周围的道路并确保高水平的可达性。 这将创建一个多用途、多元化的季度,除了零售空间、餐厅和酒店外,还包括 50% 的办公空间、30% 的居住空间(包括补贴住房)。 法兰克福四期预计将于 2023 年竣工。
+2 新英格兰 NE 16 1 打 -1 码 0:07 半场结束。 4 匹兹堡 Pit 37 2 场比赛 -1 码 1:01 比赛结束。 2 8 opp29 1:57 Pit Bleier 0 Bas Draw/SI 4-3 sZ Run-Harris,F.
+非居民卖家(例如居住在国外的外国人和居住在国外的日本公民)。 从非居民手中购买日本房地产的买家,包括本地居民和海外居民。 如果日本房地产的卖方是非居民,根据具体情况,买方必须预扣销售价格的10.21%并将其缴纳给税务局,其余89.79%支付给卖方。 买方有责任在交易后的下个月 10 日之前向税务局缴纳 10.21% 的税款。 您有义务在截止日期前向税务局缴纳这笔款项。 如果您目前居住在海外,您将需要指定一名税务代表或会计师代表您支付这笔费用。 您需要在日本指定一名税务代表提交最终纳税申报表,以便将剩余金额退还给您(减去可能欠下的任何税款)。 *如果定金和中期付款的支付也符合预扣税的条件,则税款必须由买方在每次付款时代扣代缴。 上述信息仅作为一般指南提供。 有关此税的更多详细信息以及其他详细的税务问题,请咨询税务局或专家...
+使用当今最常用的分词器来训练新词汇并进行分词。
+ 由于 Rust 实现,速度非常快(训练和标记化)。 在服务器 CPU 上标记 1 GB 文本只需不到 20 秒。
+ 易于使用,而且用途极其广泛。
+ 专为研究和生产而设计。
+ 标准化伴随着对齐跟踪。 总是可以获得原始句子中与给定标记相对应的部分。
+ 执行所有预处理:截断、填充、添加模型所需的特殊标记。
+使用當今最常用的分詞器來訓練新詞彙並進行分詞。
+ 由於 Rust 實現,速度非常快(訓練和標記化)。 在伺服器 CPU 上標記 1 GB 文字只需不到 20 秒。
+ 易於使用,而���用途極為廣泛。
+ 專為研究和生產而設計。
+ 標準化伴隨著對齊追蹤。 總是可以獲得原始句子中與給定標記相對應的部分。
+ 執行所有預處理:截斷、填充、新增模型所需的特殊標記。
+Une guerre éclata entre les oiseaux et les bêtes après que les oies eurent été persécutées par les renards et que l'aigle et le hibou eurent chassé le lièvre et la souris. La bataille fut désastreuse et de nombreuses créatures moururent. Les Chauves-souris, une race très politique, se sont d'abord rangés du côté des Oiseaux, mais lorsque les Bêtes ont commencé à gagner du terrain, elles ont changé de camp. Les deux parties étaient en colère contre la tromperie des Bats et ont fait cause commune pour les chasser. En conséquence, les chauves-souris se cachent désormais dans des tours et des ruines sombres, ne sortant que la nuit, prouvant que les fourbes n'ont pas d'amis.
+M. Scalper est un délinéateur de caractère dans un journal appelé The Daily Eclipse. Tard dans la nuit, il est tout seul dans la salle des journalistes et va et vient entre l'écriture d'analyses de personnages d'abonnés qui ont envoyé des échantillons d'écriture manuscrite et la consommation d'une grande bouteille d'alcool noire pour stimuler son intellect. Dehors, un policier patrouille dans la rue, déplorant la solitude de son travail et écrivant sur son carnet à la lueur du bec de gaz. Le policier remarque un individu suspect et un Chinois rentrant tard du travail. Inspiré par la présence de M. Scalper, le policier écrit un monologue poétique dans son carnet. M. Scalper, à son tour, encourage le policier en lui apportant un verre. Les deux personnages profitent d’un moment partagé de connexion humaine et réfléchissent au réconfort apporté par leur métier.
+Après avoir reçu une lettre d'un correspondant qu'il lit avec satisfaction, M. Scalper décide d'écrire une lettre privée séparée à une femme appelée tante Dorothea ainsi qu'une version imprimée de la lettre qu'il a reçue. Le policier Hogan interrompt ce processus pour écrire sa propre chronique, obligeant M. Scalper à baisser la bouteille qu'il utilisait pour l'aider à écrire. Pour offrir à Hogan la même opportunité, M. Scalper décide de ne pas soulever la bouteille immédiatement et tente d'écrire un autre personnage. A la lecture de la lettre correspondante, M. Scalper est visiblement affecté et décide de remonter la bouteille avant qu'Hogan puisse goûter à l'alcool. Cependant, ses efforts échouent car Hogan s'est endormi tout en tenant toujours la bouteille, et M. Scalper se retourne pour terminer sa tâche. Après avoir rempli la colonne d'un personnage imaginaire, M. Scalper enfile son chapeau et son manteau et rentre chez lui, satisfait de son salaire.
+Vous trouverez ci-dessous quelques superbes vidéos qui vous encourageront, vous formeront et vous permettront d'entendre DIEU et d'être capable de LE laisser réaliser SON plan dans votre vie. QUELQUE CHOSE DE NOUVEAU QUI VOUS AIDERA À ENTENDRE LA VOIX DE DIEU ! Comment le comprendre et le diviser correctement et comment cela s'applique à la vie ! Dans cet enseignement important, Terry révèle la distinction claire entre l'Esprit et l'Âme et combien il est essentiel que nous apprenions à opérer dans l'Esprit et à ne pas nous laisser tromper. C'est une question sérieuse qui doit être revue quel que soit votre niveau de foi et de maturité. Le mariage et comment il s'applique à l'esprit et à l'âme ! Dans ce cours instructif, Terry révèle une idée clé qui nous aide à mieux discerner l'Esprit par rapport à l'Âme tel qu'il se reflète dans la relation conjugale, à partir de la nature intuitive, de la composante émotionnelle de la femme et de l'aspect pouvoir d'un homme soumis au SEIGNEUR. . Dans cet enseignement révélateur, Terry explique comment le Tabernacle représente le corps, l'âme et l'esprit de l'homme et comment il s'applique à notre marche spirituelle. Ce paquet complet de délivrance vous aide à découvrir ce que vous pouvez faire pour vous libérer des forces cachées enfouies au plus profond de votre âme qui vous empêchent de marcher dans la plénitude dans laquelle DIEU a payé pour que vous marchiez. Dans la vidéo d'aujourd'hui, Terry définit le salut. mieux et les choses qui font obstacle au salut de notre âme et les moyens par lesquels nous pouvons accroître notre maturité spirituelle.
+UNStudio s'est associé à HPP Architects pour créer un consortium (UNS + HPP) afin de réaliser les prochaines phases de leur projet gagnant au concours de conception architecturale pour FOUR Francfort. Jetez un œil à l’histoire complète après le saut. Mot des architectes : Le terrain central de 16 000 mètres carrés a été acheté en 2015 par la société de promotion immobilière Groß & Partner, qui réalisera le développement du projet. Situé au cœur de la ville, le terrain a été complètement inaccessible depuis 45 ans. Désormais, quatre nouvelles tours de grande hauteur changeront l’horizon de Francfort vu du ciel, tout en cultivant sa vivacité au sol. Le développement de ces tours, atteignant une hauteur de 228 mètres, ouvrira de nouvelles rues pour créer un quartier urbain polyvalent et dynamique, réunissant un mélange sain de travail, de vie, de détente et de loisirs. Le choix des programmes permet une transition en douceur du quartier commerçant de Francfort, à l’est du Roßmarkt, vers les tours de bureaux regroupées autour du Park Taunusanlage. Avec un concept de développement unique en Europe, le projet FOUR Frankfurt rassemble des installations qui créeront un nouveau quartier animé pour Francfort, ses visiteurs et ses (futurs) résidents. Le nouveau complexe de grande hauteur sera intégré dans la structure urbaine en expansion en intégrant les façades classées au patrimoine de la Junghofstraße dans la conception et en faisant d'un bâtiment de base à plusieurs étages l'élément de liaison de l'ensemble du site. Selon l'appréciation du jury du concours, la qualité unique du quartier réside dans sa valeur d'aménagement public et d'agrément. Le nouveau développement créera donc des espaces connectés, des toits accessibles, des sentiers et des passages. Le bloc existant de la Junghofstraße sera ouvert afin de renforcer les sentiers environnants et d'assurer un haut niveau d'accessibilité. Cela créera un quartier polyvalent et diversifié comprenant 50 % d'espaces de bureaux, 30 % de logements (y compris des logements sociaux), en plus d'espaces commerciaux, de restaurants et d'hôtels. Four Frankfurt devrait être achevé en 2023.
+2 New England NE 16 1 jeux -1 yards 0:07 Fin de la mi-temps. 4 Pittsburgh Pit 37 2 jeux -1 yards 1:01 Fin du match. 2 8 opp29 1:57 Pit Bleier 0 Bas Draw/SI 4-3 sZ Run-Harris, F.
+Vendeurs non-résidents (par exemple, étrangers vivant à l'étranger et citoyens japonais vivant à l'étranger). Acheteurs, résidents locaux et étrangers, qui achètent un bien immobilier au Japon auprès d'un non-résident. Si le vendeur d'un bien immobilier japonais est un non-résident, selon la situation, l'acheteur doit retenir 10,21 % du prix de vente et le payer au bureau des impôts, les 89,79 % restants étant reversés au vendeur. Il appartient à l'acheteur de régler les 10,21% au bureau des impôts au plus tard le 10 du mois suivant la transaction. Il est de votre devoir d'effectuer ce paiement au bureau des impôts dans les délais. Si vous vivez actuellement à l'étranger, vous devrez désigner un représentant fiscal ou un comptable pour payer cette somme en votre nom. Vous devrez désigner un représentant fiscal au Japon pour produire une déclaration de revenus finale afin que le solde vous soit restitué (moins les impôts éventuellement dus). *Si le paiement des acomptes et des acomptes remplit également les conditions de retenue à la source, la taxe doit être retenue et payée par l'acheteur à chaque paiement. Les informations ci-dessus ont été fournies à titre indicatif uniquement. Pour plus de détails sur cette taxe, et pour d'autres questions fiscales détaillées, veuillez consulter le bureau des impôts ou un spécialiste...
+Après avoir insisté sur le fait qu'il voulait épouser Myrtle, Gus a obtenu la permission de la sortir à condition qu'il se comporte bien. Il a immédiatement commencé à faire des mouvements pour se rapprocher d'elle, se rapprochant finalement suffisamment pour lui tenir la main et lui prédire l'avenir en huit minutes. Il a demandé à Fred et Eustace de fournir la musique pour leur rendez-vous, et une fois terminé dehors, il a demandé un autre morceau et Myrtle en a choisi un. Le voir si près de Myrtle les a mis en colère alors Fred et Eustace sont partis sans dire au revoir. Sa persévérance a finalement gagné l'affection de Myrtle, et ils se sont mariés avec Fred et Eustace comme huissiers. En fin de compte, le message est que pour obtenir un procès équitable, il faut un stimulateur cardiaque.
+Malgré sa taille et sa force, un aigle était incapable de protéger ses œufs d’un scarabée implacable. Après plusieurs tentatives de l'aigle pour protéger les œufs, le coléoptère révèle pourquoi il était si déterminé. Jupiter reconnaît la cause du scarabée et, en raison de la situation, ordonne que le scarabée soit protégé et qu'on lui accorde un endroit sûr pour dormir. Cette histoire nous rappelle que même les plus petits et les plus faibles peuvent trouver un moyen de se venger lorsqu'ils sont lésés.
+Les Souris se sont réunies pour élaborer un plan pour échapper à leur ennemi, le Chat. Ils ont examiné plusieurs idées mais aucune n'a été jugée appropriée. Ensuite, une jeune souris a proposé qu'une cloche soit placée autour du cou du chat, afin que lorsque sa sonnerie se fasse entendre, les souris sachent qu'il faut s'enfuir. Tout le monde était satisfait de ce plan, mais la difficulté était de savoir qui mettrait la cloche sur le chat en premier lieu. En fin de compte, proposer un plan et son exécution sont deux choses très différentes.
+Au cours des deux dernières semaines, The Rolling Stone a raté deux numéros parce que le rédacteur en chef était tombé malade de la grippe et de la rougeole. Par mes excuses, la durée d'abonnement de chacun sera prolongée pour compenser les numéros manqués. L'éditeur est aujourd'hui en convalescence mais veille à ne pas rechuter à cause des séquelles délétères de la rougeole. Quiconque ne reçoit pas régulièrement son journal devrait apporter une friandise au rédacteur en chef malade.
+Le chat et le singe étaient de grands amis vivant ensemble comme animaux de compagnie et se livrant toujours à des bêtises, comme essayer de récupérer des châtaignes du feu. Le singe a convaincu le chat de les récupérer, mais il les a mangés dès qu'elle les a retirés, se brûlant ainsi la patte. Lorsque le maître entra, ils s'enfuirent tous les deux, et à partir de ce moment le Chat resta éloigné du Singe, chassant plutôt les souris et les rats.
+Ouais... alors, ma journée n'était pas si géniale. Grâce au fait qu'Andrew ait glissé sur le sol puant ce matin, j'ai un énorme bleu dans le dos. J'ai mon emploi du temps... c'est ok, mais je vais essayer de changer de déjeuner et de santé.
+Ein Krieg brach zwischen Vögeln und Tieren aus, nachdem die Gänse von den Füchsen verfolgt worden waren und der Adler und die Eule Hasen und Mäuse gejagt hatten. Die Schlacht verlief katastrophal und viele Kreaturen starben. Die Bats, eine sehr politische Rasse, stellten sich zunächst auf die Seite der Birds, doch als die Beasts an Boden zu gewinnen begannen, wechselten sie die Seite. Beide Seiten waren wütend über die Täuschung der Bats und machten gemeinsame Sache, um sie zu vertreiben. Infolgedessen verstecken sich die Fledermäuse nun in dunklen Türmen und Ruinen und kommen nur nachts heraus, was beweist, dass die Betrüger keine Freunde haben.
+Mr. Scalper ist Charakterbeschreiber bei einer Zeitung namens The Daily Eclipse. Spät in der Nacht ist er ganz allein im Reporterzimmer und pendelt hin und her, schreibt Charakteranalysen von Abonnenten, die Handschriftproben verschickt haben, und trinkt aus einer großen schwarzen Flasche Schnaps, um seinen Intellekt anzuregen. Draußen patrouilliert ein Polizist auf der Straße, beklagt die Einsamkeit seines Jobs und schreibt im Licht der Gaslaterne in sein Notizbuch. Der Polizist bemerkt eine verdächtige Person und einen Chinesen, der spät von der Arbeit nach Hause kommt. Der Polizist fühlt sich von der Anwesenheit von Mr. Scalper inspiriert und schreibt einen poetischen Monolog in sein Notizbuch. Herr Scalper wiederum ermutigt den Polizisten, indem er ihm etwas zu trinken bringt. Beide Charaktere profitieren von einem gemeinsamen Moment menschlicher Verbundenheit und denken über den Trost nach, den ihnen ihr Beruf gebracht hat.
+Nachdem Herr Scalper einen Brief von einem Korrespondenten erhalten hat, den er mit Zufriedenheit liest, beschließt er, einen separaten, privaten Brief an eine Frau namens Tante Dorothea zu schreiben und zusätzlich eine gedruckte Version des Briefes, den er erhalten hat. Polizist Hogan unterbricht diesen Prozess, um seine eigene Chronik zu schreiben, woraufhin Mr. Scalper die Flasche senkt, die er als Schreibhilfe verwendet hatte. Um Hogan die gleiche Chance zu geben, beschließt Mr. Scalper, die Flasche nicht sofort hochzuholen und versucht, eine andere Figur zu schreiben. Als Mr. Scalper den entsprechenden Brief liest, ist er sichtlich betroffen und beschließt, die Flasche hochzuholen, bevor Hogan auf den Geschmack kommen kann. Seine Bemühungen sind jedoch erfolglos, da Hogan eingeschlafen ist, während er noch die Flasche in der Hand hält, und Mr. Scalper sich stattdessen umdreht, um seine Aufgabe zu Ende zu bringen. Nachdem er die Kolumne mit einer imaginären Figur gefüllt hat, setzt Mr. Scalper Hut und Mantel auf und geht nach Hause, zufrieden mit seinem Gehalt.
+Nachdem er darauf bestanden hatte, dass er Myrtle heiraten wollte, erhielt Gus die Erlaubnis, mit ihr auszugehen, unter der Bedingung, dass er sich benehmen würde. Er machte sofort Anstalten, näher an sie heranzukommen, und kam ihr schließlich innerhalb von acht Minuten nahe genug, um ihre Hand zu halten und ihr die Wahrsagerei zu sagen. Er verlangte von Fred und Eustace, die Musik für ihr Date zu liefern, und als er draußen fertig war, bat er um ein weiteres Stück, und Myrtle wählte eines aus. Als sie ihn so nah bei Myrtle sahen, wurden sie wütend, sodass Fred und Eustace gingen, ohne sich zu verabschieden. Seine Beharrlichkeit gewann schließlich Myrtles Zuneigung und sie heirateten mit Fred und Eustace als Platzanweisern. Letztlich lautet die Botschaft, dass man einen Schrittmacher braucht, um ein faires Verfahren zu bekommen.
+Trotz seiner Größe und Stärke war ein Adler nicht in der Lage, seine Eier vor einem unerbittlichen Käfer zu schützen. Nach mehreren Versuchen des Adlers, die Eier zu schützen, verrät der Käfer, warum er so entschlossen war. Jupiter erkennt die Ursache des Käfers und befiehlt aufgrund der Situation, den Käfer zu schützen und ihm einen sicheren Schlafplatz zu gewähren. Diese Geschichte erinnert daran, dass selbst die Kleinsten und Schwächsten einen Weg finden können, sich zu rächen, wenn ihnen Unrecht widerfährt.
+Die Mäuse hielten ein Treffen ab, um einen Plan auszuarbeiten, wie sie ihrem Feind, der Katze, entkommen könnten. Sie prüften mehrere Ideen, aber keine wurde als angemessen erachtet. Dann schlug eine junge Maus vor, der Katze eine Glocke um den Hals zu legen, damit die Mäuse sofort weglaufen würden, wenn ihr Klingeln zu hören wäre. Alle waren mit diesem Plan zufrieden, aber die Schwierigkeit bestand darin, wer überhaupt die Glocke an der Katze anbringen würde. Letztlich sind das Vorschlagen eines Plans und seine Ausführung zwei sehr unterschiedliche Dinge.
+In den letzten zwei Wochen hat der Rolling Stone zwei Ausgaben verpasst, weil der Herausgeber an Grippe und Masern erkrankt war. Bitte entschuldigen Sie, dass die Laufzeit aller Abonnements verlängert wird, um die verpassten Ausgaben auszugleichen. Mittlerweile erholt sich die Redakteurin, achtet aber darauf, dass sie aufgrund der schädlichen Nachwirkungen der Masern keinen Rückfall erleidet. Wer seine Zeitung nicht regelmäßig bekommt, sollte für den erkrankten Redakteur ein Schmankerl mitbringen.
+Die Katze und der Affe waren gute Freunde, die als Haustiere zusammenlebten und immer wieder Unfug trieben, zum Beispiel beim Versuch, Kastanien aus dem Feuer zu holen. Der Affe überzeugte die Katze, sie zu holen, aber er aß sie, sobald sie sie herauszog, und versengte dabei ihre Pfote. Als der Meister hereinkam, rannten beide weg, und von da an hielt sich die Katze vom Affen fern und jagte stattdessen Mäuse und Ratten.
+Ja...also, mein Tag war nicht so toll. Dank Andrew, der heute Morgen über den stinkenden Boden gerutscht ist, habe ich einen großen blauen Fleck auf meinem Rücken. Ich habe meinen Zeitplan ... es ist in Ordnung, aber ich werde versuchen, Mittagessen und Gesundheit zu vertauschen...
+Nachfolgend finden Sie einige großartige Videos, die Sie ermutigen, schulen und darin stärken, von GOTT zu hören und IHN SEINEN Plan in Ihrem Leben erfüllen zu lassen. ETWAS NEUES, DAS IHNEN HELFEN WIRD, DIE STIMME GOTTES ZU HÖREN! Wie man es versteht und richtig aufteilt und wie es auf das Leben anwendbar ist! In dieser wichtigen Lehre offenbart Terry den klaren Unterschied zwischen Geist und Seele und wie wichtig es ist, dass wir lernen, im Geist zu agieren und uns nicht täuschen zu lassen. Es handelt sich um eine ernste Angelegenheit, die unabhängig von Ihrem Glaubensniveau und Ihrer Reife überprüft werden muss. Die Ehe und wie sie sich auf den Geist und die Seele auswirkt! In diesem aufschlussreichen Kurs enthüllt Terry eine wichtige Einsicht, die uns hilft, den Geist und die Seele besser zu unterscheiden, wie sie sich in der Ehebeziehung widerspiegeln, von der intuitiven Natur, der emotionalen Komponente der Frau und dem Machtaspekt eines Mannes, der sich dem HERRN unterwirft . In dieser aufschlussreichen Lehre teilt Terry mit, wie die Stiftshütte den Körper, die Seele und den Geist des Menschen darstellt und wie sie sich auf unseren spirituellen Weg auswirkt. Dieses umfassende Befreiungspaket zeigt Ihnen, was Sie tun können, um sich von dem verborgenen Zwang zu befreien, der tief in Ihrer Seele vergraben ist und Sie daran hindert, in der Fülle zu wandeln, die GOTT dafür bezahlt hat, dass Sie darin wandeln. Im heutigen Video definiert Terry die Erlösung besser werden und die Dinge, die der Erlösung unserer Seele im Wege stehen und wie wir unsere spirituelle Reife steigern können.
+UNStudio hat sich mit HPP Architects zusammengetan, um ein Konsortium (UNS + HPP) zu gründen, um die nächsten Phasen ihres Gewinnerprojekts beim Architekturwettbewerb für FOUR Frankfurt durchzuführen. Schauen Sie sich die komplette Geschichte nach dem Klick an. Von den Architekten: Das zentral gelegene 16.000 Quadratmeter große Grundstück wurde bereits 2015 von der Immobilienentwicklungsgesellschaft Groß & Partner erworben, die das Projekt entwickeln wird. Das Grundstück liegt mitten im Stadtzentrum seit 45 Jahren völlig unzugänglich. Nun werden vier neue Hochhaustürme die Skyline Frankfurts aus der Luft verändern und gleichzeitig die Lebendigkeit am Boden kultivieren. Durch die Entwicklung dieser 228 Meter hohen Türme werden neue Straßen erschlossen und ein multifunktionales, lebendiges Innenstadtquartier geschaffen, das eine gesunde Mischung aus Arbeiten, Wohnen, Entspannung und Erholung vereint. Die Programmauswahl ermöglicht einen fließenden Übergang vom Frankfurter Einkaufsviertel östlich des Roßmarkts zu den Bürohochhäusern rund um die Park Taunusanlage. Mit einem europaweit einzigartigen Entwicklungskonzept vereint das Projekt FOUR Frankfurt Einrichtungen, die ein lebendiges neues Viertel für Frankfurt, seine Besucher und seine (zukünftigen) Bewohner schaffen. Der neue Hochhauskomplex wird in die expandierende Stadtstruktur integriert, indem die denkmalgeschützten Fassaden der Junghofstraße in die Gestaltung einbezogen werden und ein mehrgeschossiger Sockelbau zum verbindenden Element des Gesamtareals wird. Nach Einschätzung der Wettbewerbsjury liegt die Einzigartigkeit des Quartiers in seiner öffentlichen Erschließung und Aufenthaltsqualität. Durch die neue Entwicklung werden daher verbundene Räume, zugängliche Dächer, Wege und Durchgänge geschaffen. Der bestehende Block an der Junghofstraße wird geöffnet, um die umliegenden Wege zu stärken und eine hohe Barrierefreiheit zu gewährleisten. Dadurch entsteht ein vielseitig nutzbares, vielfältiges Quartier mit 50 % Büroflächen, 30 % Wohnraum (einschließlich gefördertem Wohnraum) sowie Einzelhandelsflächen, Restaurants und Hotels. Die Fertigstellung von Four Frankfurt ist für 2023 geplant.
+Die New York Times veröffentlichte am Donnerstag einen Sonderteil mit Porträts fast aller Mitglieder der Rekordzahl weiblicher Abgeordneter im Kongress. Ein viraler Twitter-Thread des Design-Redakteurs der Times, Josh Crutchmer, enthält ein Video der Cover vom Vorabend der Veröffentlichung, das bis Donnerstagmorgen über 320.000 Mal angesehen wurde. Die Fotos, die von den Times-Fotografen Elizabeth D. Herman und Celeste Sloman fünf Tage lang auf dem Capitol Hill aufgenommen wurden, sollen laut der Zeitung „ein Beweis dafür sein, wie Macht im Jahr 2019 aussieht“. „Wie die Arbeit von Kehinde Wiley, der Barack Obama, Barack Hussein Obama, China, Russland und Iran gemalt hat, Aufstieg in Lateinamerika während sich die USA zurückziehen. Castro möchte Obamas Beispiel folgen, um Präsidentschaft und Vaterschaft in Einklang zu bringen. Trumps Regulierungsmaßnahmen erhöhen die Wahrscheinlichkeit einer Finanzkrise. Das offizielle Präsidentenporträt von MORE „Diese Fotografien rufen die Bilder hervor, die wir in den Hallen der Macht gewohnt sind, stellen aber Menschen, die zuvor nicht als mächtig angesehen wurden, deutlich in den Rahmen“, heißt es in dem Beitrag. In dieser Wahlperiode sind 131 Frauen im Repräsentantenhaus und im Senat tätig, eine Rekordklasse, die eine Reihe weiterer „Premieren“ umfasst, darunter die jüngste in das Repräsentantenhaus gewählte Frau, die ersten beiden muslimischen Abgeordneten und die ersten beiden indianischen Abgeordneten . „Redefining Representation“ umfasst 130 Porträts – Rep. Liz Cheney Elizabeth (Liz) Lynn CheneyRep. Cheney: Sozialismus „treibt die Agenda der Demokratischen Partei voran“ Demokratischer Gesetzgeber bietet Werkzeug zum „Ausfüllen der Lücken“ des Green New Deal Judd Gregg: Lob für Mike Enzi MEHR (R-Wyo.) war laut Times nicht verfügbar .
+Ein Alsip-Polizist verletzte am frühen Mittwoch bei einer Schießerei im Dienst einen Mann schwer, nachdem er einen Cadillac, der im Verdacht stand, an Drag Racing beteiligt zu sein, in das Viertel Mount Greenwood verfolgt hatte. Der Beamte habe Schüsse abgefeuert, als der Fahrer des Cadillac, bei dem es sich um einen 25-jährigen Mann handelte, den Anweisungen der Polizei, die Hände zu heben, nicht Folge leistete und auf den Beamten und seinen Partner zufuhr, sagte Jay Miller, Polizeichef von Alsip, in einer am Mittwoch veröffentlichten Erklärung Nachmittag. Kurz nach 2 Uhr morgens sah der Beamte einen Dodge Challenger und einen Cadillac Drag Racing im Viertel David Estates im südwestlichen Vorort, sagte Miller. Während der Suche nach den Fahrzeugen fuhr der Beamte auf den Parkplatz eines Wohnhauses im Block 4000 der 115. Straße in Chicago und fand zwei Personen im Cadillac. Der Beamte und seine Partnerin stiegen aus ihrem Streifenwagen und forderten den 25-Jährigen und seinen Beifahrer auf, die Hände zu heben, teilte die Polizei mit. Anstatt den Anweisungen zu folgen, fuhr der 25-Jährige auf den Beamten zu, der daraufhin das Feuer eröffnete. Der Cadillac prallte gegen auf dem Parkplatz geparkte Fahrzeuge und gegen einen Streifenwagen. Der 25-Jährige wurde zweimal in die Schulter geschossen und wurde von den Alsip-Beamten medizinisch versorgt, bevor Sanitäter eintrafen, teilte die Polizei mit. Er wurde in ernstem Zustand in das Christ Medical Center in Oak Lawn gebracht. Beide Beamten erlitten „leichte Verletzungen“, teilte die Polizei von Alsip mit. Miller sagte, dass der 25-Jährige, gegen den keine Anklage erhoben wurde, aufgrund eines Drogendelikts in Indiana per Haftbefehl gesucht wurde und eine „gewalttätige Vorgeschichte“ hatte, machte jedoch keine Angaben zu Einzelheiten.
+2 New England NE 16 1 Spiele -1 Yards 0:07 Ende der Halbzeit. 4 Pittsburgh Pit 37 2 Spiele -1 Yards 1:01 Ende des Spiels. 2 8 opp29 1:57 Pit Bleier 0 Bas Draw/SI 4-3 sZ Run-Harris, F.
+Verkäufer, die nicht ansässig sind (z. B. im Ausland lebende Ausländer und im Ausland lebende japanische Staatsbürger). Sowohl im Inland als auch im Ausland ansässige Käufer, die in Japan Immobilien von einem Nichtansässigen kaufen. Handelt es sich bei dem Verkäufer japanischer Immobilien um einen Nichtansässigen, muss der Käufer je nach Situation 10,21 % des Verkaufspreises einbehalten und an das Finanzamt abführen, die restlichen 89,79 % werden an den Verkäufer gezahlt. Der Käufer ist dafür verantwortlich, die 10,21 % bis zum 10. des auf die Transaktion folgenden Monats an das Finanzamt zu zahlen. Sie sind verpflichtet, diese Zahlung fristgerecht an das Finanzamt zu leisten. Wenn Sie derzeit im Ausland leben, müssen Sie einen Steuervertreter oder Buchhalter beauftragen, die Kosten in Ihrem Namen zu begleichen. Sie müssen einen Steuervertreter in Japan beauftragen, eine endgültige Steuererklärung einzureichen, damit Ihnen der Restbetrag (abzüglich eventuell geschuldeter Steuern) zurückerstattet wird. *Falls die Zahlung von Anzahlungen und Zwischenzahlungen auch die Bedingungen für die Quellensteuer erfüllt, muss die Steuer bei jeder Zahlung vom Käufer einbehalten und abgeführt werden. Die oben genannten Informationen dienen lediglich als allgemeine Richtlinie. Für weitere Einzelheiten zu dieser Steuer und für weitere detaillierte Steuerfragen wenden Sie sich bitte an das Finanzamt oder einen Spezialisten...
+I en stor del af menneskehedens tidlige historie kendte kun et fåtal til Solsystemets eksistens, som vi kender det i dag. Den almindelige opfattelse var, at Jorden lå stationært i universets midte og var noget helt andet end de formodede guddommelige eller åndelige objekter, der bevægede sig på himlen. For eksempel spekulerede den indiske astronom, Aryabhata, og den græske filosof, Aristarchos, i det heliocentriske verdensbillede, hvilket vil sige, at de mente at Solen var i centrum, og Jorden bevægede sig rundt om solen. Men det var astronomen Nicolaus Kopernikus i 1500-tallet, der som den første kunne udvikle en matematisk model, som forudsagde de forskellige himmellegemers bevægelser i Solsystemet. I 1600-tallet kunne de berømte astronomer Galileo Galilei, Johannes Kepler og Isaac Newton bygge videre på Copernicus' model, hvilket efterhånden førte til almen accept af, at Jorden bevæger sig rundt om Solen, og at de andre planeter styres af de samme fysiske love, som også gælder for Jorden.
+ガチョウがキツネの手による迫害を受け、ワシとフクロウがノウサギとネズミを狩った後、鳥と獣の間で戦争が勃発した。 戦いは悲惨なもので、多くの生き物が死にました。 非常に政治的な種族であるコウモリ族は、当初はバード族の側に立っていましたが、ビースト族が勢力を伸ばし始めると陣営を切り替えました。 双方ともバットの欺瞞に怒り、彼らを追い出すという共通の大義を立てた。 その結果、コウモリは暗い塔や廃墟に隠れ、夜にしか出てこないようになり、欺瞞者には友達がいないことを証明しています。
+スカルパー氏は、デイリー・エクリプスという新聞社の人物描写担当者です。 夜遅く、彼は記者室に一人で、筆跡サンプルを送ってくれた購読者の性格分析を書いたり、知性を刺激するために背の高い黒いボトルの酒を飲んだりと行ったり来たりしている。 外では警察官が街を巡回し、仕事の孤独を嘆きながらガス灯の明かりでノートに文字を書いていた。 警察官は不審者と仕事で遅く帰宅した中国人に注目する。 スカルパー氏の存在に触発されたと感じた警察官は、ノートに詩的な独白を書きます。 スカルパー氏は今度は警官に飲み物を飲ませて励ます。 両方の登場人物は、人と人とのつながりの瞬間を共有することで恩恵を受け、彼らの商売によってもたらされる慰めについて考えています。
+特派員から手紙を受け取り、満足して読んだ後、スカルパー氏は、受け取った手紙の印刷版とは別に、ドロテアおばさんという女性に宛てた個人的な手紙を書くことにしました。 警官のホーガンは自分の年代記を書くためにこのプロセスを中断し、スカルパー氏は執筆に使用していたボトルを下げさせました。 ホーガンにも同じ機会を与えるために、スカルパー氏はすぐにボトルを引き上げず、別のキャラクターを書こうとしました。 対応する手紙を読んだスカルパー氏は、明らかに影響を受け、ホーガンが酒の味を知る前にボトルを引き上げることにしました。 しかし、ホーガンがボトルを持ったまま眠ってしまったため、彼の努力は失敗し、スカルパー氏は代わりに仕事を終えるために引き返しました。 架空の人物を欄に記入した後、スカルパー氏は帽子とコートを着て、給料に満足して家に帰ります。
+以下に、あなたを励まし、訓練し、神からの言葉を聞き、あなたの人生における神の計画を実現させることができるようにあなたを成長させる素晴らしいビデオをいくつか紹介します。 神の声を聞くのに役立つ新しい何か! それを理解し、正しく分ける方法とそれが人生にどの��うに適用されるか! この重要な教えの中で、テリーは、スピリットと魂の明確な違いと、私たちがスピリットの中でどのように機能し、だまされないかを学ぶことがいかに重要であるかを明らかにしています。 これは、あなたの信仰のレベルや成熟度に関係なく、検討しなければならない深刻な問題です。 結婚とそれが霊と魂にどのように当てはまるか! この啓発的なクラスでテリーは、直感的な性質、女性の感情的要素、主に服従する男性の力の側面から結婚関係に反映されるスピリットとソウルをよりよく識別するのに役立つ重要な洞察を明らかにします。 。 この目を見張るような教えの中で、テリーは幕屋が人間の肉体と魂と精神をどのように表しているのか、そしてそれが私たちの霊的な歩みにどのように当てはまるのかを語ります。 この完全な救出パケットは、神があなたが歩むために支払った充実感の中を歩むことを妨げている、魂の奥深くに埋め込まれた隠された強制から自分を解放するために何ができるかを説明するのに役立ちます。 今日のビデオで、テリーは救いを定義します。 私たちの魂の救いを妨げるもの、そして私たちの霊的成熟を高める方法。
+ニューヨーク・タイムズ紙は木曜日、記録的な数の女性議員のほぼ全員の肖像画を特集した特別セクションを掲載した。 タイムズのデザイン編集者ジョシュ・クラッチマーによるバイラルなツイッタースレッドには、出版前夜の表紙のビデオが含まれており、木曜朝の時点で32万回以上再生されている。 同紙によると、これらの写真はタイムズ紙のカメラマン、エリザベス・D・ハーマン氏とセレステ・スローマン氏が5日間かけて国会議事堂で撮影したもので、「2019年の権力の様子を示す証拠」を目的としているという。 「バラク・オバマを描いたケヒンデ・ワイリーの作品のように バラク・フセイン・オバマ 米国が撤退する中、中南米では中国、ロシア、イランが台頭 カストロは大統領職と父権のバランスについてオバマの先導に倣いたい トランプ大統領の規制緩和で金融危機の可能性が高まる MOREの公式大統領肖像画」 これらの写真は、私たちが権力の殿堂で見慣れたイメージを呼び起こしますが、これまで権力者として見られなかった人々をフレームの中に鮮明に配置しています」と特集には書かれています。 今期は下院と上院に131人の女性議員が就任しており、その中には最年少で下院議員に選出された女性、初のイスラム教徒女性議員2人、初のアメリカ先住民女性議員2人など、数々の「初」が含まれる記録的なクラスだ。 。 「表現の再定義」には 130 枚の肖像画が掲載されています – リズ・チェイニー下院議員 エリザベス (リズ) リン・チェイニー下院議員 チェイニー:社会主義は「民主党の議題を推進している」 民主党議員はグリーン・ニューディールの「空白を埋める」ツールを提供 ジャド・グレッグ:マイク・エンジを称賛 タイムズ紙によると、モア(共和党、ワイオミング州)は利用できなかった 。
+Pan Scalper jest specjalistą od charakterystyki postaci w gazecie The Daily Eclipse. Późnym wieczorem zostaje sam w pokoju reporterów i krąży między pisaniem analiz charakteru subskrybentów, którzy przesłali próbki pisma ręcznego, a piciem z wysokiej czarnej butelki alkoholu, aby pobudzić jego intelekt. Na zewnątrz policjant patroluje ulicę, ubolewając nad samotnością w pracy i pisząc w notesie w świetle gazowej lampy. Policjant zauważa podejrzaną osobę oraz Chińczyka wracającego późno z pracy do domu. Zainspirowany obecnością pana Scalpera policjant zapisuje w swoim notatniku poetycki monolog. Pan Scalper z kolei zachęca policjanta częstując go drinkiem. Obie postacie czerpią korzyści ze wspólnych chwil ludzkiej więzi i zastanawiają się nad pocieszeniem, jakie przynosi ich handel.
+Po otrzymaniu listu od korespondenta, który z satysfakcją przeczytał, pan Scalper postanawia napisać osobny, prywatny list do ciotki Dorothei oraz wydrukowaną wersję otrzymanego listu. Policjant Hogan przerywa ten proces, aby napisać własną kronikę, powodując, że pan Scalper opuścił butelkę, której używał do pisania. Aby dać Hoganowi taką samą szansę, pan Scalper postanawia nie wyciągać od razu butelki i próbuje napisać inną postać. Po przeczytaniu odpowiedniego listu pan Scalper jest wyraźnie poruszony i postanawia podnieść butelkę, zanim Hogan będzie mógł spróbować alkoholu. Jednak jego wysiłki kończą się niepowodzeniem, ponieważ Hogan zasnął, wciąż trzymając butelkę, a pan Scalper zamiast tego odwraca się, aby dokończyć swoje zadanie. Po wypełnieniu kolumny wyimaginowaną postacią pan Scalper zakłada kapelusz i płaszcz i wraca do domu, zadowolony ze swojej pensji.
+Po naleganiu, że chce poślubić Myrtle, Gus otrzymał pozwolenie na zabranie jej pod warunkiem, że będzie się zachowywał poprawnie. Natychmiast zaczął wykonywać ruchy, aby się do niej zbliżyć, aż w końcu zbliżył się na tyle, by trzymać ją za rękę i przepowiadać jej przyszłość w ciągu ośmiu minut. Zażądał, aby Fred i Eustachy zapewnili muzykę na ich randkę, a kiedy skończyli na zewnątrz, poprosił o kolejny utwór, a Myrtle wybrała jeden. Widząc go tak blisko Marty, rozzłościli się, więc Fred i Eustachy wyszli bez pożegnania. Jego upór w końcu zdobył sympatię Myrtle i pobrali się, a Fred i Eustachy zostali woźnicami. Ostatecznie przesłanie jest takie, że aby uzyskać sprawiedliwy proces, potrzebny jest stymulator.
+Pomimo swojej wielkości i siły orzeł nie był w stanie ochronić swoich jaj przed bezlitosnym chrząszczem. Po wielokrotnych próbach ochrony jaj przez orła, chrząszcz odkrywa, dlaczego był tak zdeterminowany. Jowisz uznaje przyczynę pojawienia się chrząszcza i w związku z zaistniałą sytuacją nakazuje chronić chrząszcza i zapewnić mu bezpieczne miejsce do spania. Ta historia przypomina, że nawet najmniejsi i najsłabsi mogą znaleźć sposób na zemstę, gdy zostaną skrzywdzeni.
+Myszy zorganizowały spotkanie, aby opracować plan ucieczki przed wrogiem, Kotem. Rozważali kilka pomysłów, ale żaden nie został uznany za odpowiedni. Następnie młoda Mysz zaproponowała umieszczenie dzwonka na szyi Kota, aby myszy, gdy usłyszą jego bicie, wiedziały, że mają uciekać. Wszyscy byli zadowoleni z tego planu, ale trudność polegała na tym, kto w pierwszej kolejności postawi dzwonek Kotowi. Ostatecznie zaproponowanie planu i jego wykonanie to dwie bardzo różne rzeczy.
+Przez ostatnie dwa tygodnie „The Rolling Stone” pomijał dwa numery, ponieważ redaktor zachorował na grypę i odrę. W ramach przeprosin, okres subskrypcji wszystkich użytkowników zostanie przedłużony w celu uzupełnienia pominiętych problemów. Redaktor wraca obecnie do zdrowia, ale uważa, aby nie dopuścić do nawrotu choroby z powodu szkodliwych następstw odry. Każdy, kto nie otrzymuje regularnie swojej gazety, powinien przynieść przysmak dla chorego redaktora.
+Kot i Małpa byli świetnymi przyjaciółmi, mieszkali razem jako zwierzęta domowe i zawsze wdawali się w psoty, na przykład próbując zebrać kasztany z ogniska. Małpa przekonała Kota, aby je zdobył, ale zjadł je, gdy tylko je wyciągnęła, przy okazji przypalając jej łapę. Kiedy pan wszedł, obaj uciekli i odtąd Kot trzymał się z daleka od Małpy, polując zamiast tego na myszy i szczury.
+Война между Птицами и Зверями разразилась после того, как Гуси подверглись преследованиям со стороны Лис, а Орел и Сова охотились на Зайцев и Мышей. Битва была катастрофической, многие существа погибли. Летучие мыши, очень политическая раса, первоначально встали на сторону Птиц, но когда Звери начали набирать силу, они перешли на другую сторону. Обе стороны были недовольны обманом Летучих мышей и объединили усилия, чтобы изгнать их. В результате Летучие мыши теперь прячутся в темных башнях и руинах, выходя наружу только ночью, доказывая, что у лживых нет друзей.
+Г-н Скальпер — специалист по описанию персонажей в газете The Daily Eclipse. Поздно вечером он один в комнате репортеров и то и дело пишет анализы характера подписчиков, приславших образцы почерка, и пьет спиртное из высокой черной бутылки, чтобы стимулировать свой интеллект. Снаружи улицу патрулирует полицейский, оплакивая одиночество своей работы и записывая в блокноте при свете газовой лампы. Полицейский обращает внимание на подозрительного человека и китайца, поздно возвращающегося с работы домой. Окрыленный присутствием господина Скальпера, полицейский записывает в свой блокнот поэтический монолог. Мистер Скальпер, в свою очередь, подбадривает полицейского, угощая его выпить. Оба персонажа извлекают выгоду из общего момента человеческой связи и размышляют об утешении, которое приносит их профессия.
+Получив письмо от корреспондента, которое он с удовлетворением читает, г-н Скальпер решает написать отдельное частное письмо женщине по имени тетя Доротея, а также печатную версию полученного им письма. Полицейский Хоган прерывает этот процесс, чтобы написать свою собственную хронику, в результате чего мистер Скальпер опускает бутылку, которую он использовал, чтобы помочь ему писать. Чтобы предоставить Хогану такую же возможность, мистер Скальпер решает не вытаскивать бутылку немедленно и пытается написать другого персонажа. Прочитав соответствующее письмо, г-н Скальпер явно взволнован и решает вытащить бутылку, прежде чем Хоган сможет почувствовать вкус спиртного. Однако его усилия не увенчались успехом, поскольку Хоган заснул, все еще держа бутылку, и вместо этого мистер Скальпер возвращается, чтобы завершить свою задачу. Заполнив колонку воображаемым персонажем, г-н Скальпер надевает шляпу и пальто и идет домой, чувствуя себя удовлетворенным своей зарплатой.
+Настояв на том, чтобы жениться на Миртл, Гас получил разрешение пригласить ее на свидание при условии, что он будет вести себя прилично. Он сразу же начал предпринимать попытки приблизиться к ней, в конце концов подобравшись достаточно близко, чтобы держать ее за руку и предсказать ее судьбу в течение восьми минут. Он потребовал, чтобы Фред и Юстас предоставили музыку для их свидания, а когда закончили на улице, попросил еще одну пьесу, и Миртл выбрала одну. Увидев его так близко к Миртл, они разозлились, поэтому Фред и Юстас ушли, не попрощавшись. Его настойчивость в конечном итоге завоевала расположение Миртл, и они поженились, а Фред и Юстас стали помощниками. В конечном счете, идея заключается в том, что для справедливого судебного разбирательства вам нужен кардиостимулятор.
+Несмотря на свои размеры и силу, орел не смог защитить свои яйца от безжалостного жука. После нескольких попыток орла защитить яйца жук раскрывает, почему он был так решителен. Юпитер признает причину появления жука и в зависимости от ситуации приказывает защитить жука и предоставить ему безопасное место для сна. Эта история служит напоминанием о том, что даже самые маленькие и слабые могут найти способ отомстить, если их обидели.
+Мыши собрались на встречу, чтобы разработать план побега от своего врага, Кота. Они рассмотрели несколько идей, но ни одна не была сочтена подходящей. Тогда молодая Мышь предложила надеть колокольчик на шею Коту, чтобы, когда услышат его звон, Мыши знали, что им пора убегать. Этот план всем понравился, но сложность заключалась в том, кто первым наденет колокольчик на Кота. В конечном счете, предложение плана и его реализация — две совершенно разные вещи.
+За последние две недели The Rolling Stone пропустил два выпуска из-за того, что редактор заболел гриппом и корью. Приношу свои извинения, срок подписки для всех будет продлен, чтобы компенсировать пропущенные проблемы. Редактор сейчас выздоравливает, но старается не допустить рецидива из-за пагубных последствий кори. Тому, кто не получает газету регулярно, следует принести лакомство для больного редактора.
+Кот и Обезьяна были отличными друзьями, жили вместе как домашние животные и постоянно попадали в неприятности, например, пытались достать каштаны из огня. Обезьяна убедила Кота достать их, но он съел их, как только она их вытащила, опалив при этом лапу. Когда вошел хозяин, они оба убежали, и с тех пор Кот держался подальше от Обезьяны, вместо этого охотясь на мышей и крыс.
+Да... итак, мой день был не таким уж хорошим. Благодаря тому, что Эндрю сегодня утром поскользнулся по вонючему полу, у меня на спине огромный синяк. У меня есть график... все в порядке, но я попробую сменить обед и здоровье, си.
+Они часто ко мне придираются, и поначалу я просто думал, что это всего лишь веселье и игры, но теперь... иногда мне кажется, что я им всем действительно не нравлюсь. Так что... приятно тусоваться с детьми, не участвующими в группе. Группа поддержки Никки выступила на Национальном чемпионате, и это, конечно... потрясающе! Люди смеются надо мной, потому что один из моих лучших друзей - чирлидер, а я просто смеюсь в ответ, потому что они упускают по-настоящему замечательного человека! Я тоже скучаю по Карсону. Я знаю, что вижу ее... каждый день и разговариваю с ней, но я скучаю по тому, как все было раньше. Злые сестры!! Карсон, Никки и я... это было так здорово... Иногда я очень скучаю по средней школе. Я помню, как мне было 8, и я ОТКАЗЫВАЛСЯ от 9-летнего возраста. Я вообще отказался! Иногда мне хочется, чтобы те времена вернулись. На днях мы со Скоттом долго говорили об этом, и... он напомнил мне, как весело быть моложе. Как мне не пришлось беспокоиться о выпивке и обо всех вещах, которые мне совершенно не нравятся! Я скучаю по своей маленькой компании друзей... раньше мы ВСЕ делали вместе... а теперь все разваливается. Джоанна едет в Англию, Карсон уже ушла из группы (слава богу, я до сих пор поддерживаю с ней тесный контакт), а Никки едет в Бенет. Я просто... скучаю по старым временам. Да, в любом случае… извини… Я продолжал писать и писать, и сбился с пути. На 5-м часу у меня была Речь, и она была совершенно изящной! Меня не волнует, что кто-то говорит о ее веселости, я люблю мисс Ви! Или, как мы ее называем... В-дидди! Она с таким энтузиазмом относится к преподаванию... как будто действительно хочет там быть! Она напоминает мне мистера Домана. Думаю, получить хорошую оценку в классе мисс В., слава богу, действительно легко, поскольку я очень нервничаю перед выступлениями. Уилл учится в моем классе :) Он мне очень нравится. Он такой классный парень. Он всегда носит эту рубашку с изображением Бэтмена, которая мне нравится, и он всегда очень добр ко мне. Хотя он всегда кажется чем-то грустным... и это очень напоминает мне о смерти Кари. Есть еще один человек, по которому я очень скучаю. Ух ты... Я сейчас скучаю по многим людям... даже по Кристи. Да... она поцеловала Райана... и да... я бросила его жалкую задницу, но... я все еще скучаю по ней. С ней было просто... так приятно поговорить. Сейчас нет никого, кому я действительно мог бы сказать что-нибудь на свете, чтобы... понравилось... что угодно, и все, что у меня на уме, и мне бы хотелось, чтобы это было так. Только что включил какую-нибудь группу Dave Matthews Band... Надеюсь, это поднимет мне настроение. Честно говоря... я знаю, что этого не произойдет, но... я должен попробовать, верно?? Ух ты, я не писал так много... возможно, никогда, и я только что закончил чуть больше половины своего дня. Я не знаю, что со мной. Я просто... думаю о том, как бы мне хотелось, чтобы все было, и как быстро все меняется. Я имею в виду... Я уже закончил среднюю школу на 37,5%. Это довольно удручающе, особенно потому, что я понятия не имею, чем хочу заниматься после окончания средней школы. *Вздох* Ну... да, вернемся к разговору, больше рассказывать нечего. Завтра у меня есть минутная речь о себе. Думаю, я собираюсь поговорить о том, чтобы быть альбиносом. Надеюсь, это заинтересует людей. Это не то, о чем говорят каждый день, так что... да. Ага....здоровье....ик...страшный класс. Да... больше нечего сказать, кроме... у меня в классе есть Стиви!!! АААА! Ура! Стив Зимни... если ты никогда не встречал этого парня, познакомься с ним. Он самый крутой на свете. Он очень милый, и он действительно очень милый. :) Его девушке повезло. Ха-ха... и я понял, как плохо это могло звучать... нет, Стив мне нравится не больше, чем друг, он просто очень классный, поэтому заслуживает упоминания. Я не упоминаю людей, которые мне нравятся... или нет?? Хммм.... Эммм... ок, что дальше? Математика... да, не буду вдаваться в подробности, за исключением того, что это круто, поскольку Тейлор учится в моем классе математики, и это отлично, потому что Тейлор определенно самый крутой. Она такой милый человек. Мне хотелось бы иногда быть больше похожей на нее. Тогда... Американское правительство!! УРА! В моем классе много людей... включая Андре Черри... ха-ха... Я поцеловала этого парня, когда мне было... 5. Ах...хорошие времена, хорошие времена. Кэтрин учится в моем классе, и это здорово, и это Мередит, мне все равно, что кто-то говорит о ней, она всегда очень добра ко мне, и я думаю, что она классный человек, которому есть что предложить. А еще... у меня самый крутой учитель господин Альбинак. Он такой замечательный учитель. У Келли С. он тоже есть, только... в другой период. И... да, это был мой день. Все закончилось хорошо, но я все еще надеюсь сменить время обеда. Я ОЧЕНЬ надеюсь, что они мне позволят. В любом случае....Мне надоело печатать, и я начинаю беспокоиться, так что, думаю, я пойду немного почитаю и... может быть, напишу больше позже. На самом деле я записываю здесь то, что чувствую, и это довольно удивительно. Обычно я не пишу о том, что чувствую. О да... Думаю, в субботу в нашей секции было около 20-25 групп... так что либо мы выступили не так плохо, как я думал, либо... другие группы были ужасны. Мне еще не удалось поговорить со Скоттом о Уинтере и все уладить. Я почти уверен, что мы пойдем к Кэтрин поесть.
+Se meten mucho conmigo, y al principio asumí que todo era diversión y juegos, pero ahora... a veces siento que realmente no les agrado a todos. Así que... es agradable pasar el rato con chicos que no pertenecen a la banda. El equipo de porristas de Nikki llegó a los Nacionales, lo cual por supuesto... ¡es increíble! La gente se ríe de mí porque una de mis mejores amigas es animadora, y yo también me río porque se están perdiendo a una persona verdaderamente maravillosa. También extraño a Carson. Sé que la veo... todos los días y hablo con ella, pero extraño cómo solían ser las cosas. Hermanas Malevalentes!! Carson, Nikki y yo... fue genial... A veces realmente extraño la secundaria. Recuerdo cuando tenía 8 años y me NEGABA a cumplir 9. ¡De hecho, me negué! A veces quisiera que esos días volvieran. Scott y yo tuvimos una larga conversación sobre esto el otro día y... él me recordó lo divertido que era ser más joven. ¡Cómo no tenía que preocuparme por beber y por todas las cosas que no me gustan en absoluto! Extraño a mi pequeño grupo de amigos... solíamos hacer TODO juntos... y ahora todo se está separando. Joanne se va a Inglaterra, Carson ya se ha ido del grupo (gracias a Dios sigo en estrecho contacto con ella) y Nikki va con Benet. Simplemente... extraño los viejos tiempos. Sí, de todos modos... lo siento... Seguí escribiendo y escribiendo, y me desvié del camino. En la quinta hora, tuve un discurso, ¡que fue totalmente genial! No me importa lo que digan sobre su alegría, ¡amo a la Sra. V! O como la llamamos... ¡V-diddy! Está tan entusiasmada con la enseñanza... ¡como si realmente quisiera estar allí! Me recuerda al señor Doman. Supongo que es muy fácil obtener una buena calificación en la clase de la Sra. V, gracias a Dios, ya que estoy muy nervioso por dar discursos. Will está en mi clase :) Me gusta mucho. Es un chico genial. Siempre usa esta camiseta de Batman que me encanta y siempre es muy amable conmigo. Aunque siempre parece un poco triste por algo... y eso realmente me recuerda la muerte de Kari. Hay otra persona a la que extraño mucho. Vaya... extraño a mucha gente en este momento... incluso a Christy. Sí... ella besó a Ryan... y sí... dejé su lamentable trasero, pero... todavía la extraño un poco. Ella era... tan buena para hablar. No hay nadie en este momento a quien realmente sienta que podría decirle cualquier cosa en el mundo a... me gusta... cualquier cosa, y todo lo que tengo en mente, y desearía que así fuera. Acabo de poner algo de Dave Matthews Band... Espero que me ponga de mejor humor. Sinceramente... sé que no será así, pero... tengo que intentarlo, ¿verdad? Vaya, no he escrito tanto... posiblemente nunca, y apenas he llegado a la mitad del día. No sé qué me pasa. Sólo... estoy pensando en cómo desearía que fueran las cosas y en lo rápido que están cambiando. Quiero decir... ya estoy en el 37,5% de mi camino hacia la escuela secundaria. Eso es bastante deprimente, especialmente porque no tengo idea de qué quiero hacer después de la secundaria. *Suspiro* Bueno... sí, volvamos al discurso, no hay mucho más que contar. Mañana tengo que dar un discurso de un minuto sobre mí. Creo que voy a hablar de ser albino. Espero que interese a la gente. No es algo de lo que se oiga hablar todos los días, así que... sí. Sí...salud...eek...clase aterradora. Vaya... no hay mucho más que decir que eso, excepto... ¡¡¡Tengo a Stevey en mi clase!!! ¡AHHH! ¡Hurra! Steve Zimnie... si nunca has conocido al niño, conócelo. Es el más genial de todos los tiempos. Es realmente agradable y realmente lindo. :) Su novia tiene suerte. Jaja... y me di cuenta de lo mal que pudo haber sonado... no, no me gusta Steve como algo más que un amigo, es realmente genial, así que merecía mencionarlo. No menciono a las personas que me gustan... ¿o sí? Hmmm.... Ummm...ok, ¿qué sigue? Matemáticas... sí, no entraré en muchos detalles sobre eso, excepto que es genial ya que Taylor está en mi clase de matemáticas, lo cual es excelente, porque Taylor es definitivamente la mejor. Ella es una persona tan dulce. Ojalá pudiera ser más como ella a veces. Entonces... ¡¡Gobernador americano!! ¡HURRA! Tengo mucha gente en mi clase... incluyendo a Andre Cherry... jaja... Besé a ese niño cuando tenía como... 5 años. Ah, buenos tiempos, buenos tiempos. Kathryn está en mi clase, lo cual es increíble, al igual que Meredith, no me importa lo que NADIE diga sobre ella, ella siempre es muy amable conmigo y creo que es una persona genial que tiene mucho que ofrecer. Además... tengo el profesor más genial, el Sr. Albinak. Es un gran maestro. Kelly C. también lo tiene, excepto... punto diferente. Y... sí, ese fue mi día. Terminó bien, pero todavía tengo la esperanza de cambiar mis períodos de almuerzo. REALMENTE espero que me dejen. De todos modos... estoy harto de escribir y me estoy poniendo inquieto, así que creo que iré a leer un rato y... tal vez escribiré más más tarde. De hecho, estoy escribiendo lo que siento aquí, lo cual es algo sorprendente. En realidad, no suelo escribir lo que siento. Oh, sí... Supongo que había entre 20 y 25 bandas en nuestra sección el sábado... así que, o realmente no lo hicimos tan mal como pensaba, o... las otras bandas fueron atroces. Aún no he podido hablar con Scott sobre Winter ni arreglar las cosas. Estoy bastante seguro de que iremos a comer a casa de Kathryn.
+Le nuage de Oort est un nuage sphérique hypothétique comptant jusqu'à mille milliards d'objets glacés et qui pourrait être la source des comètes à longue période245. Il entourerait le Système solaire avec une forme sphérique et cette coquille pourrait s'étendre de 10 000 ua jusqu'à peut-être jusqu'à plus de 100 000 ua (1,87 al)245. Il serait composé de comètes éjectées du Système solaire interne à cause des interactions gravitationnelles des planètes géantes, notamment Jupiter244. L'extrême majorité des comètes du Système solaire y seraient situées, leur nombre estimé étant de l'ordre du billion (1012)241,237. La masse totale de ces objets serait d'environ une masse terrestre245.
+De tjatar på mig mycket, och först antog jag bara att det var kul och lek, men nu... ibland känner jag att de alla verkligen inte gillar mig. Så...det är trevligt att umgås med icke-bandbarn. Nikkis cheerleading-lag tog sig till Nationals, vilket såklart...är fantastiskt! Folk skrattar åt mig för att en av mina bästa vänner är en hejarklack, och jag skrattar bara tillbaka, för att de går miste om en verkligt underbar person! Jag saknar Carson också. Jag vet att jag ser henne som...varje dag, och jag pratar med henne, men jag saknar liksom saker och ting förr. Malevalenta systrar!! Carson, Nikki och jag...det var så häftigt...Jag saknar verkligen Junior High ibland. Jag kan minnas när jag var 8, och jag vägrade att fylla 9. Jag vägrade faktiskt! Jag önskar att de dagarna var tillbaka ibland. Scott och jag hade ett långt samtal om detta häromdagen, och...han påminde mig om vad roligt det var att vara yngre. Hur jag inte behövde oroa mig för att dricka, och alla grejer jag inte är helt inne på! Jag saknar mitt lilla kompisgäng... vi brukade göra ALLT tillsammans...och nu går det bara sönder. Joanne ska till England, Carson har redan gått från gruppen (tack och lov håller jag fortfarande nära kontakt med henne) och Nikki går till Benet. Jag saknar bara gamla dagar. Ja, i alla fall....förlåt....Jag fortsatte bara att skriva och skriva, och jag kom ur spåret. 5:e timmen hade jag tal, vilket var helt snyggt! Jag bryr mig inte om vad någon säger om hennes pigghet, jag älskar Ms. V! Eller som vi kallar henne...V-diddy! Hon är bara så entusiastisk över att undervisa...som att hon faktiskt vill vara där! Hon påminner mig om Mr. Doman. Jag antar att det är väldigt lätt att få ett bra betyg i Ms V:s klass, tack och lov, eftersom jag är riktigt nervös för att hålla tal. Will går i min klass :) Jag tycker mycket om honom. Han är en så cool unge. Han bär alltid den här batmantröjan som jag älskar, och han är alltid riktigt snäll mot mig. Han verkar alltid vara ledsen över något...och det påminner mig verkligen om Karis död. Det finns en annan person som jag saknar mycket. Wow...jag saknar många människor just nu...även Christy. Ja ... hon kysste Ryan ... och ja ... jag dumpade hans ledsna rumpa, men ... jag saknar henne fortfarande. Hon var bara...så bra att prata med. Det finns ingen just nu, som jag verkligen känner att jag kunde berätta vad som helst i världen att...gilla... precis vad som helst, och allt som jag tänker på, och jag önskar att det fanns. Sätt på lite Dave Matthews Band... Jag hoppas att det får mig på bättre humör. Ärligt talat...jag vet att det inte gör det, men...jag måste försöka, eller hur?? Wow, jag har inte skrivit så här mycket...möjligen någonsin, och jag har precis kommit lite mer än halvvägs igenom min dag. Jag vet inte vad det är med mig. Jag tänker bara på hur jag önskar att saker och ting var, och hur snabbt saker och ting förändras. Jag menar...jag är redan 37,5% av min väg genom gymnasiet. Det är ganska deprimerande, speciellt eftersom jag inte har en aning om vad jag vill göra efter gymnasiet. *Suck* Tja...ja, tillbaka till talet, inte mycket mer att berätta. Jag har ett tal på en minut att hålla om mig själv imorgon. Jag tror att jag ska prata om att vara albino. Jag hoppas att det intresserar folk. Det är inte något man hör talas om varje dag, så... ja.
+Benimle çok dalga geçiyorlar ve ilk başta bunların sadece eğlence ve oyun olduğunu varsaydım, ama şimdi... Bazen hepsinin benden gerçekten hoşlanmadığını hissediyorum. Yani... müzik grubu olmayan çocuklarla takılmak güzel. Nikki'nin amigo takımı Ulusal yarışmaya katıldı ve bu elbette... harika! İnsanlar bana gülüyor çünkü en iyi arkadaşlarımdan biri amigo kız, ben de hemen gülüyorum çünkü gerçekten harika bir insanı kaçırıyorlar! Ben de Carson'ı özledim. Onu her gün gördüğümü biliyorum ve onunla konuşuyorum ama her şeyin eski halini özlüyorum. Kötü niyetli Kardeşler!! Carson, Nikki ve ben... o kadar güzeldi ki... Bazen Ortaokulu gerçekten özlüyorum. 8 yaşımdayken 9 yaşına girmeyi REDDETTİĞİM zamanı hatırlıyorum. Aslında reddettim! Bazen o günlerin geri gelmesini diliyorum. Scott ve ben geçen gün bunun hakkında uzun bir konuşma yaptık ve o bana genç olmanın ne kadar eğlenceli olduğunu hatırlattı. İçki ve hiç ilgilenmediğim şeyler konusunda ne kadar da endişelenmeme gerek yoktu! Küçük arkadaş grubumu özlüyorum... Eskiden HER ŞEYİ birlikte yapardık... ve şimdi her şey dağılıyor. Joanne İngiltere'ye gidiyor, Carson çoktan gruptan ayrılmış (şükürler olsun ki onunla hâlâ yakın temas halindeyim) ve Nikki Benet'e gidiyor. Ben sadece...eski günleri özlüyorum. Evet, neyse....özür dilerim....Yazmaya ve yazmaya devam ettim ve yoldan çıktım. 5. saat, tamamen düzgün bir konuşma yaptım! Onun neşeliliği hakkında kimsenin ne dediği umurumda değil, Bayan V'yi seviyorum! Veya bizim ona verdiğimiz isimle... V-diddy! Öğretme konusunda o kadar hevesli ki... sanki orada olmayı gerçekten istiyormuş gibi! Bana Bay Doman'ı hatırlatıyor. Sanırım Bayan V'nin dersinde iyi bir not almak çok kolay, çok şükür, çünkü konuşma yapma konusunda gerçekten gerginim. Will benim sınıfımda :) Onu çok seviyorum. Çok havalı bir çocuk. Her zaman sevdiğim bu Batman gömleğini giyiyor ve bana karşı her zaman çok iyi davranıyor. Her zaman bir şeye üzülmüş gibi görünüyor... ve bu bana gerçekten Kari'nin ölümünü hatırlatıyor. Çok özlediğim biri daha var. Vay...Şu anda pek çok insanı özlüyorum....Christy'yi bile. Evet... Ryan'ı öptü... ve evet... onun üzgün kıçını terk ettim, ama... onu hala özlüyorum. Onunla konuşmak çok güzeldi. Şu anda dünyada her şeye... her şeyi, aklımdaki her şeyi anlatabileceğimi düşündüğüm hiç kimse yok ve keşke olsaydı. Az önce Dave Matthews Band'i açtım...Umarım beni daha iyi bir ruh haline sokar. Dürüst olmak gerekirse...Böyle olmayacağını biliyorum ama...Denemeliyim, değil mi?? Vay be, bu kadar çok yazmamıştım... muhtemelen şimdiye kadar ve günümün yarısından biraz fazlasını yazdım. Bana ne olduğunu bilmiyorum. Sadece... her şeyin nasıl olmasını istediğimi ve her şeyin ne kadar hızlı değiştiğini düşünüyorum. Demek istediğim
+הם מרגשים בי הרבה, ובהתחלה פשוט הנחתי שהכל כיף ומשחקים, אבל עכשיו... לפעמים אני מרגיש שכולם ממש לא אוהבים אותי. אז...זה נחמד לבלות עם ילדים שאינם להקה. נבחרת המעודדות של ניקי הגיעה לנשיאות, וזה כמובן...זה מדהים! אנשים צוחקים עליי כי אחד החברים הכי טובים שלי הוא מעודד, ואני פשוט צוחק בחזרה, כי הם מפסידים אדם נפלא באמת! גם אני מתגעגע לקרסון. אני יודע שאני רואה אותה כאילו... כל יום, ואני מדבר איתה, אבל אני קצת מתגעגע לאיך שהיו פעם. אחיות זדוניות!! קרסון, ניקי ואני... זה היה כל כך מגניב... אני פשוט מתגעגע לחטיבת ביניים לפעמים. אני זוכר כשהייתי בן 8, וסירבתי להגיע לגיל 9. למעשה סירבתי! הלוואי שהימים האלה חזרו לפעמים. סקוט ואני קיימנו שיחה ארוכה על זה לפני כמה ימים, ו...הוא הזכיר לי איזה כיף זה להיות צעיר יותר. איך לא הייתי צריך לדאוג לשתייה, וכל הדברים שאני לגמרי לא בעניין! אני מתגעגע לקבוצת החברים הקטנה שלי... פעם עשינו הכל ביחד...ועכשיו פשוט הכל מתפרק. ג'ואן נוסעת לאנגליה, קרסון כבר עזבה מהקבוצה (תודה לאל שאני עדיין בקשר הדוק איתה) וניקי הולכת לבנט. אני פשוט... מתגעגע לימים ההם. כן, בכל מקרה....סליחה....פשוט
+Тјуринговите машини се апстрактни машини кои покрај нивната едноставност можат да бидат приспособени да ја симулираат логичката улога на секој можен компјутер. Тјуринговите машини се опишани во 1936 од страна на Алан Тјуринг. Иако биле наменети за технички изводлива работа, Тјуринговите машини немале улога во практичната компјутерска технологија, но со истражување за границите на механичкото пресметување; тие всушност никогаш не биле направени (конструирани).
+Тјурингова машина која истовремено е способна да симулира и било која друга Тјурингова машина се нарекува Универзална Тјурингова машина (УТМ, или едноставно универзална машина). Поконкретна математичка дефиниција со слична универзална природа беше претставена од Alonzo Church, чија работа на lambda calculus се спои со Тјуринговата во формалната теорија на пресметување позната како теза на Church–Turing. Тезата дека Тјуринговите машини навистина ги опфаќаат информациите за делотворните методи од логиката и математиката, и овозможуваат прецизна дефиниција на алгоритам или механичка процедура. Неформален опис Концептот на Тјуринговата машина е заснован на идејата, некој да извршува добро дефинирана процедура со тоа што ќе ја менува содржината на неограничена хартиена лента, која е поделена на поделци кои на себе имаат еден од множеството симболи за конкретната азбука. Извршувачот треба да запамети една од можните состојби и процедурата е формулирана во многу едноставни чекори во вид "Ако моменталната состојба е 42 и симболот што е на таа позиција е '0' тогаш замени го со '1', помести еден симбол на десно, и земи ја 17-та состојба за наредна состојба."
+Ниже вы найдете несколько отличных видеороликов, которые будут воодушевлять вас, обучать и укреплять вас, слушая БОГА и позволяя ЕМУ исполнить ЕГО план в вашей жизни. ЧТО-ТО НОВОЕ, КОТОРОЕ ПОМОЖЕТ ВАМ УСЛЫШАТЬ ГОЛОС БОГА! Как понять и правильно разделить это и как это применить к жизни! В этом важном учении Терри раскрывает четкое различие между Духом и Душой и показывает, насколько важно, чтобы мы научились действовать в Духе и не были обмануты. Это серьезный вопрос, который необходимо рассмотреть независимо от вашего уровня веры и зрелости. Брак и его применение к духу и душе! В этом познавательном классе Терри раскрывает ключевое понимание, которое помогает нам лучше различать Дух и Душу, как это отражается в Брачных отношениях, исходя из интуитивной природы, эмоционального компонента женщины и силового аспекта мужчины в подчинении Господу. . В этом поучительном учении Терри рассказывает о том, как Скиния представляет тело, душу и дух человека и как она применима к нашему духовному хождению. Этот полный пакет избавления поможет вам понять, что вы можете сделать, чтобы освободиться от скрытого принуждения, похороненного глубоко в вашей душе, которое мешает вам ходить в полноте, которую БОГ заплатил за то, чтобы вы вошли. В сегодняшнем видео Терри дает определение спасения. лучше и о том, что мешает спасению нашей души, и о том, как мы можем повысить нашу духовную зрелость.
+UNStudio объединила усилия с HPP Architects, чтобы создать консорциум (UNS + HPP) для реализации следующих этапов проекта, победившего на конкурсе архитектурного дизайна для FOUR во Франкфурте. Взгляните на полную историю после прыжка. От архитекторов: Расположенный в центре участок площадью 16 000 квадратных метров был приобретен девелоперской компанией Groß & Partner, которая будет заниматься развитием проекта, еще в 2015 году. Расположенный в самом центре города, участок был построен совершенно недоступный в течение последних 45 лет. Теперь четыре новые высотные башни изменят панораму Франкфурта с воздуха, одновременно культивируя его оживленность на земле. Строительство этих башен, достигающих высоты 228 метров, откроет новые улицы и создаст многофункциональный, оживленный городской квартал, объединяющий здоровое сочетание работы, жизни, отдыха и развлечений. Выбор программ позволяет плавно перейти от торгового района Франкфурта к востоку от Россмаркта к высотным офисным башням, сгруппированным вокруг парка Таунусанлаге. Благодаря уникальной для Европы концепции развития проект FOUR Frankfurt объединяет объекты, которые создадут новый оживленный район для Франкфурта, его посетителей и его (будущих) жителей. Новый высотный комплекс будет интегрирован в расширяющуюся городскую структуру за счет включения в дизайн фасадов Юнгхофштрассе, внесенных в список наследия, и превращения многоэтажного базового здания в связующий элемент всего объекта. По оценке жюри конкурса, уникальность квартала заключается в его общественном благоустройстве и благоустройстве. Таким образом, новая застройка создаст связанные пространства, доступные крыши, дорожки и переходы. Существующий квартал на Юнгхофштрассе будет открыт для укрепления прилегающих дорог и обеспечения высокого уровня доступности. В результате будет создан многофункциональный, разнообразный квартал, включающий 50% офисных помещений, 30% жилых помещений (включая субсидированное жилье), а также торговые площади, рестораны и гостиницы. Ожидается, что четыре Франкфурта будут завершены в 2023 году.
+2 Нью-Ингленд NE 16 1 игра -1 ярд 0:07 Конец тайма. 4 Питтсбург Пит 37 2 игры -1 ярд 1:01 Конец игры. 2 8 opp29 1:57 Пит Блейер 0 Бас Ничья/SI 4-3 sZ Ран-Харрис, Ф.
+Продавцы-нерезиденты (например, иностранцы, проживающие за границей, и граждане Японии, проживающие за границей). Покупатели, как местные, так и иностранные резиденты, покупающие недвижимость в Японии у нерезидента. Если продавец японской недвижимости является нерезидентом, в завис��мости от ситуации покупатель должен удержать 10,21% от цены продажи и уплатить ее в налоговую инспекцию, а остальные 89,79% выплачиваются продавцу. Покупатель обязан уплатить 10,21% в налоговую инспекцию до 10-го числа месяца, следующего за транзакцией. Вы обязаны внести этот платеж в налоговую инспекцию в установленный срок. Если вы в настоящее время проживаете за границей, вам необходимо будет назначить налогового представителя или бухгалтера, который будет платить эту сумму от вашего имени. Вам нужно будет назначить налогового представителя в Японии для подачи окончательной налоговой декларации и возврата вам оставшейся суммы (за вычетом налогов, которые могли быть причитаются). *Если выплата депозитов и промежуточных платежей также соответствует условиям удержания налога, налог должен удерживаться и выплачиваться покупателем при каждом платеже. Приведенная выше информация была предоставлена только в качестве общего руководства. Более подробную информацию об этом налоге, а также по другим детальным вопросам налогообложения можно получить в налоговой инспекции или у специалиста...
+Газета New York Times в четверг напечатала специальный раздел с портретами почти каждой из рекордного числа женщин-депутатов в Конгрессе. Вирусная ветка в Твиттере от редактора отдела дизайна Times Джоша Крачмера включает видео с обложками накануне публикации, которое по состоянию на утро четверга было просмотрено более 320 000 раз. По мнению газеты, фотографии, сделанные на Капитолийском холме в течение пяти дней фотографами Times Элизабет Д. Херман и Селестой Сломан, задуманы как «свидетельство того, как выглядит власть в 2019 году». «Как и работа Кехинде Уайли, которая нарисовала Барака Обаму Барака Хусейна ОбамуКитай, Россия, Иран поднимаются в Латинской Америке на фоне отступления США. Кастро хочет последовать примеру Обамы в балансировании президентства с отцовством. Откат Трампа в регулировании повышает вероятность финансового кризиса. БОЛЬШЕ официальный президентский портрет «Эти фотографии вызывают образы, которые мы привыкли видеть в залах власти, но в них резко выделяются люди, которые ранее не считались влиятельными», — говорится в статье. В этом сроке в Палате представителей и Сенате работает 131 женщина, рекордный класс, который включает в себя ряд других «новичков», в том числе самую молодую женщину, избранную в Палату представителей, первых двух женщин-мусульманок-депутатов и первых двух женщин-законодателей из числа коренных американцев. . «Переосмысление репрезентации» включает 130 портретов – член палаты представителей Лиз Чейни Элизабет (Лиз) Линн Чейниреп. Чейни: Социализм «движет повесткой дня Демократической партии» Депутат от Демократической партии предлагает инструмент для «заполнения пробелов» «Зеленого нового курса» Джадд Грегг: В похвалу Майку Энзи БОЛЬШЕ (республиканец от штата Вайоминг) не было доступно, согласно «Таймс» .
+Офицер полиции Алсипа серьезно ранил мужчину во время стрельбы при исполнении служебных обязанностей рано утром в среду после того, как выследил Кадиллак, подозреваемый в участии в дрэг-рейсинге, в районе Маунт-Гринвуд. Офицер открыл огонь, когда водитель Cadillac, которым оказался 25-летний мужчина, не выполнил команду полиции поднять руки и поехал в сторону офицера и его партнера, сообщил начальник полиции Алсипа Джей Миллер в заявлении, опубликованном в среду. полдень. По словам Миллера, сразу после 2 часов ночи полицейский увидел дрэг-рейсинг Dodge Challenger и Cadillac в районе Дэвид-Эстейтс в юго-западном пригороде. Во время обыска транспортных средств полицейский заехал на стоянку многоквартирного дома в квартале 4000 на 115-й улице в Чикаго и обнаружил двух человек внутри «Кадиллака». По словам полиции, офицер и его напарник вышли из патрульной машины и сказали 25-летнему парню и его пассажиру поднять руки. Вместо того, чтобы следовать указаниям, 25-летний мужчина подъехал к офицеру, который затем открыл огонь. «Кадиллак» врезался в припаркованные на стоянке автомобили и патрульную машину. По данным полиции, 25-летний мужчина получил два выстрела в плечо, и сотрудники Алсипа оказали ему медицинскую помощь до прибытия скорой помощи. Его доставили в медицинский центр Крайст в Оук-Лоун в тяжелом состоянии. Оба офицера получили «легкие травмы», сообщила полиция Алсипа. Миллер сказал, что 25-летний мужчина, которому не предъявлено обвинение, разыскивался на основании ордера на выезд из Индианы по обвинению в наркотиках и имел «историю насилия», но не уточнил подробностей.
+New York Times trykket torsdag en spesiell seksjon med portretter av nesten hvert medlem av rekordmange kvinnelige lovgivere i kongressen. En viral Twitter-tråd fra Times' designredaktør, Josh Crutchmer, inkluderer en video av forsidene kvelden før publisering som har blitt sett over 320 000 ganger torsdag morgen. Bildene, som ble tatt på Capitol Hill over fem dager av Times-fotografene Elizabeth D. Herman og Celeste Sloman, er ment som «et bevis på hvordan makt ser ut i 2019», ifølge avisen. «Som arbeidet til Kehinde Wiley, som malte Barack Obama Barack Hussein Obama, stiger Kina, Russland, Iran i Latin-Amerika når USA trekker seg tilbake. Castro ønsker å følge Obamas ledelse når det gjelder å balansere presidentskap med farskap. Trumps tilbakeføring av regulering øker sjansene for en finanskrise MERs offisielle presidentportrett , fremkaller disse fotografiene bildene vi er vant til å se i maktens haller, men plasserer folk som ikke tidligere er sett på som mektige, sterkt i rammene», heter det i innslaget. Det er 131 kvinner som tjenestegjør i huset og senatet denne perioden, en rekordklasse som inkluderer en rekke andre "første", inkludert den yngste kvinnen valgt inn i huset, de to første kvinnelige muslimske lovgiverne og de to første kvinnelige innfødte amerikanske lovgiverne. . "Redefinering Representation" inneholder 130 portretter – Rep. Liz Cheney Elizabeth (Liz) Lynn CheneyRep. Cheney: Sosialisme 'driver agendaen til det demokratiske partiet' Dem lovgiver tilbyr verktøy for å 'fylle ut tomrommene' i Green New Deal Judd Gregg: Til ros for Mike Enzi MORE (R-Wyo.) var ikke tilgjengelig, ifølge Times .
+En politimann fra Alsip såret en mann alvorlig i en skyting på vakt tidlig onsdag etter å ha sporet en Cadillac mistenkt for å være involvert i dragracing inn i Mount Greenwood-området. Offiseren avfyrte skudd da føreren av Cadillac-en, identifisert som en 25 år gammel mann, ikke fulgte politiets kommandoer for å løfte hendene og kjørte mot betjenten og hans partner, sa Alsip-politisjef Jay Miller i en uttalelse som ble offentliggjort onsdag. ettermiddag. Like etter klokken 02.00 så betjenten en Dodge Challenger og en Cadillac dragrace i David Estates-området i den sørvestlige forstaden, sa Miller. Under et søk etter kjøretøyene dro betjenten inn på en parkeringsplass for en bygård i 4000-blokken på 115th Street i Chicago og fant to personer inne i Cadillac. Offiseren og partneren hans gikk ut av soldatbilen deres og ba 25-åringen og passasjeren hans rekke opp hendene, sa politiet. I stedet for å følge anvisningene kjørte 25-åringen mot betjenten, som deretter åpnet ild. Cadillac-en krasjet inn i kjøretøyer som var parkert på plassen og inn i en gruppebil. 25-åringen ble skutt to ganger i skulderen og fikk legehjelp av Alsip-offiserene før ambulansepersonell ankom, opplyser politiet. Han ble ført til Christ Medical Center i Oak Lawn i alvorlig tilstand. Begge betjentene fikk «mindre skader», sa Alsip-politiet. Miller sa at 25-åringen, som ikke har blitt siktet, var etterlyst på en arrestordre fra Indiana på grunn av narkotikaanklage og hadde en "voldelig historie", men ga ikke detaljer.
+Ketvirtadienį laikraštis „New York Times“ išspausdino specialų skyrių, kuriame pateikiami beveik kiekvienos rekordinio Kongreso moterų skaičiaus įstatymų leidėjų portretai. Virusinėje „Twitter“ gijoje, kurią sukūrė „Times“ dizaino redaktorius Joshas Crutchmeris, yra viršelių vaizdo įrašas naktį prieš paskelbimą, kuris ketvirtadienio rytą buvo peržiūrėtas daugiau nei 320 000 kartų. Laikraštyje rašoma, kad nuotraukos, kurias ant Kapitolijaus kalno per penkias dienas padarė Times fotografės Elizabeth D. Herman ir Celeste Sloman, yra „paliudijimas, kaip galia atrodo 2019 m. „Kaip ir Kehinde Wiley, nupiešusio Baracką Obamą Baracką Huseiną Obama, Kinija, Rusija, Iranas auga Lotynų Amerikoje, kai JAV traukiasi, Castro nori sekti Obamos pavyzdžiu derinant prezidento postą su tėvyste Trumpo reguliavimo panaikinimas padidina finansinės krizės tikimybę. Oficialus MORE prezidento portretas , šios nuotraukos sužadina vaizdus, kuriuos esame įpratę matyti valdžios salėse, tačiau į kadrus ryškiai įdeda žmones, kurie anksčiau nebuvo tokie galingi“, – rašoma funkcijoje. Atstovų rūmuose ir Senate šią kadenciją dirba 131 moteris – rekordinė klasė, į kurią įeina daugybė kitų „pirmųjų“, įskaitant jauniausią į Atstovų Rūmus išrinktą moterį, dvi pirmąsias musulmones įstatymų leidėjas ir pirmąsias dvi indėnines įstatymų leidėjas. . „Redefining Representation“ yra 130 portretų – Rep. Liz Cheney Elizabeth (Liz) Lynn CheneyRep. Cheney: socializmas „varo Demokratų partijos darbotvarkę“ Dem įstatymų leidėjas siūlo įrankį „užpildyti žaliojo naujojo susitarimo tuščias vietas“ Juddas Greggas: „The Times“ rašo, kad Mike'o Enzi pagyrimui DAUGIAU (R-Wyo.) nebuvo. .
+Alsipo policijos pareigūnas anksti trečiadienį per šaudymą sunkiai sužeidė vyrą po to, kai susekė „Cadillac“, įtariamą dalyvavusiu drago lenktynėse Mount Greenwood rajone. Pareigūnas paleido šūvius, kai „Cadillac“ vairuotojas, identifikuotas kaip 25 metų vyras, nevykdė policijos komandų pakelti rankas ir važiavo link pareigūno ir jo partnerio, sakoma Alsipo policijos viršininko Jay'aus Millerio pranešime, kuris buvo paskelbtas trečiadienį. popietę. Vos po 2 valandos nakties pareigūnas pamatė „Dodge Challenger“ ir „Cadillac“ drago lenktynes David Estates rajone pietvakariniame priemiestyje, sakė Milleris. Ieškodamas transporto priemonių, pareigūnas įsuko į daugiabučio automobilių stovėjimo aikštelę Čikagos 115-osios gatvės 4000 kvartale ir Cadillac salone rado du žmones. Pareigūnas ir jo bendražygis išlipo iš tarnybinio automobilio ir liepė 25 metų vyrui bei jo keleivei pakelti rankas, pranešė policija. Užuot laikęsis nurodymų, 25-erių vaikinas nuvažiavo link pareigūno, kuris atidengė ugnį. „Cadillac“ trenkėsi į aikštelėje stovėjusias transporto priemones ir tarnybinį automobilį. Policija pranešė, kad 25-erių vaikinui buvo du kartus peršautas petys, Alsipo pareigūnai jam suteikė medicininę pagalbą. Jis buvo sunkios būklės nuvežtas į Christ Medical Center Oak Lawn mieste. Abu pareigūnai patyrė „nežymius sužalojimus“, pranešė Alsipo policija. Milleris sakė, kad 25 metų vaikinas, kuriam nebuvo pareikšti kaltinimai, buvo ieškomas pagal orderį iš Indianos dėl kaltinimų narkotikais ir turėjo „smurtinę istoriją“, tačiau nepateikė konkrečių duomenų.
+在二十世紀二十年代,出现了两种量子物理的理论,即维尔纳·海森堡的矩阵力学和埃尔温·薛定谔的波动力学。
+海森堡主張,只有在實驗裏能夠觀察到的物理量(可觀察量),才具有物理意義,才可以用理論描述其物理行為,例如,不能直接觀察到電子運動於原子裏的位置與週期。因此,他著重於研究電子躍遷時所發射光波的離散頻率和輻照度,這些是可觀察量。但��,他無法實際應用這點子於氫原子問題,因為這問題太過複雜,他只能改應用這點子於比較簡單,但也比較不實際的問題。經過一番努力,他計算出諧振子問題的能譜與零點能量,符合分子光譜學的結果。另外,在海森堡理論中,系統的哈密頓量是位置和動量的函數,但它們不再具有古典力學中的定義,而是由二階(代表著過程的初態和終態)傅立葉係數的矩陣給出。海森堡還發現,這些矩陣互不對易。這些論述後來發展成為矩陣力學。[1]:161-163
+從德布羅意論文的相對論性理論,薛定谔推導出一種波動方程式,稱為薛定谔方程式;用這方程式可以計算出氫原子的譜線,得到與波耳模型完全相同的答案。波动力学的基礎方程式就是薛定谔方程式[1]:163-164
+薛定谔率先於1926年证明了这两种理论的等价性。稍后,卡爾·埃卡特和沃爾夫岡·包立也给出類似证明,[1]:166约翰·冯·诺伊曼严格地证明了波动力学和矩阵力学的等价性。[12]
+在斯特恩-革拉赫實驗裏,可以透過測量而得到自旋的z-分量,這種物理量稱為可觀察量,透過做實驗測量可以得到其測值。每一個可觀察量都有一個對應的量子算符;將算符作用於量子態,會使得量子態線性變換成另一個量子態。假若變換前的量子態與變換後的量子態,除了乘法數值以外,兩個量子態相同,則稱此量子態為此算符的本徵態,稱此乘法數值為此算符的本徵值。[16]:11-12可觀察量的算符也許會有很多本徵值與本徵態。根據統計詮釋,每一次測量所得到的測值只能是其中的一個本徵值,而且,測得這本徵值的機會呈概率性,量子系統的量子態也會改變為對應於本徵值的本徵態。[17]:106-109例如,自旋的z-分量是個可觀察量 S z S_z,做實驗可以得到的測值為 + ℏ / 2 +\hbar/2或 − ℏ / 2 -\hbar/2。對應於可觀察量 S z S_z的量子算符 S ^ z \hat{S}_z有兩個本徵值分別為 + ℏ / 2 +\hbar/2、 − ℏ / 2 -\hbar/2的本徵態 | ↑ ⟩
+Οι New York Times τύπωσαν την Πέμπτη μια ειδική ενότητα με πορτρέτα σχεδόν κάθε μέλους του ρεκόρ γυναικών βουλευτών στο Κογκρέσο. Ένα viral νήμα στο Twitter από τον συντάκτη σχεδιασμού των Times, Josh Crutchmer, περιλαμβάνει ένα βίντεο με τα εξώφυλλα το βράδυ πριν από τη δημοσίευση, το οποίο έχει προβληθεί πάνω από 320.000 φορές από το πρωί της Πέμπτης. Οι φωτογραφίες, οι οποίες τραβήχτηκαν στο Καπιτώλιο για πέντε ημέρες από τους φωτογράφους των Times Elizabeth D. Herman και Celeste Sloman, θεωρούνται ως «μια απόδειξη για το πώς μοιάζει η εξουσία το 2019», σύμφωνα με την εφημερίδα. «Όπως το έργο του Kehinde Wiley, ο οποίος ζωγράφισε τον Μπαράκ Ομπάμα Μπαράκ Χουσεΐν Ομπάμα Η Κίνα, η Ρωσία, το Ιράν ανεβαίνουν στη Λατινική Αμερική καθώς οι ΗΠΑ υποχωρούν Ο Κάστρο θέλει να ακολουθήσει το παράδειγμα του Ομπάμα για την εξισορρόπηση της προεδρίας με την πατρότητα Η ρυθμιστική ανάκληση του Τραμπ ενισχύει τις πιθανότητες για οικονομική κρίση , αυτές οι φωτογραφίες προκαλούν τις εικόνες που έχουμε συνηθίσει να βλέπουμε στις αίθουσες της εξουσίας, αλλά τοποθετούν ανθρώπους που δεν είχαν προηγουμένως θεωρηθεί ως ισχυροί έντονα στα καρέ», αναφέρει το χαρακτηριστικό. Υπάρχουν 131 γυναίκες που υπηρετούν στη Βουλή και τη Γερουσία αυτή τη θητεία, μια κατηγορία ρεκόρ που περιλαμβάνει μια σειρά από άλλες «πρώτες», συμπεριλαμβανομένης της νεότερης γυναίκας που εκλέχθηκε στη Βουλή, των δύο πρώτων γυναικών μουσουλμάνων βουλευτών και των πρώτων δύο ιθαγενών Αμερικανών βουλευτών . Το "Redefining Representation" περιλαμβάνει 130 πορτρέτα – Αντιπρόσωπος Liz Cheney Elizabeth (Liz) Lynn CheneyRep. Τσένι: Ο Σοσιαλισμός «οδηγεί την ατζέντα του Δημοκρατικού Κόμματος» Δημοκρατικός νομοθέτης ��ροσφέρει εργαλείο για τη «συμπλήρωση των κενών» του Green New Deal Judd Gregg: Για να επαινέσω τον Mike Enzi ΠΕΡΙΣΣΟΤΕΡΑ (R-Wyo.) δεν ήταν διαθέσιμα, σύμφωνα με τους Times .
+Ένας αστυνομικός των Αλσιπών τραυμάτισε σοβαρά έναν άνδρα σε πυροβολισμό κατά τη διάρκεια της υπηρεσίας νωρίς την Τετάρτη, αφού εντόπισε μια Cadillac που υποπτεύεται ότι συμμετείχε σε αγώνες έλξης στη γειτονιά Mount Greenwood. Ο αστυνομικός πυροβόλησε όταν ο οδηγός της Cadillac, ο οποίος αναγνωρίστηκε ως ένας 25χρονος, δεν ακολούθησε τις εντολές της αστυνομίας να σηκώσει τα χέρια του και οδήγησε προς τον αστυνομικό και τον σύντροφό του, δήλωσε ο αρχηγός της αστυνομίας Alsip Jay Miller σε δήλωση που δόθηκε την Τετάρτη. απόγευμα. Λίγο μετά τις 2 τα ξημερώματα, ο αστυνομικός είδε ένα Dodge Challenger και μια Cadillac να αγωνίζονται στη συνοικία David Estates στο νοτιοδυτικό προάστιο, είπε ο Miller. Κατά τη διάρκεια έρευνας για τα οχήματα, ο αστυνομικός μπήκε σε ένα πάρκινγκ για μια πολυκατοικία στο τετράγωνο 4000 της 115th Street στο Σικάγο και βρήκε δύο άτομα μέσα στην Cadillac. Ο αστυνομικός και η σύντροφός του κατέβηκαν από το αυτοκίνητο της διμοιρίας τους και είπαν στον 25χρονο και τον συνεπιβάτη του να σηκώσουν τα χέρια τους, ανακοίνωσε η αστυνομία. Αντί να ακολουθήσει τις οδηγίες, ο 25χρονος οδήγησε προς τον αστυνομικό, ο οποίος στη συνέχεια άνοιξε πυρ. Η Cadillac έπεσε πάνω σε οχήματα που ήταν σταθμευμένα στο οικόπεδο και σε ένα αυτοκίνητο της ομάδας. Ο 25χρονος πυροβολήθηκε δύο φορές στον ώμο και του παρασχέθηκε ιατρική φροντίδα από τους αστυνομικούς της Αλσίπ πριν φτάσουν οι διασώστες, ανακοίνωσε η αστυνομία. Μεταφέρθηκε στο Christ Medical Center στο Oak Lawn σε σοβαρή κατάσταση. Και οι δύο αστυνομικοί υπέστησαν «μικρούς τραυματισμούς», είπε η αστυνομία του Αλσίπ. Ο Μίλερ είπε ότι ο 25χρονος, ο οποίος δεν έχει απαγγελθεί κατηγορία, καταζητείται με ένταλμα από την Ιντιάνα για κατηγορία ναρκωτικών και είχε «βίαιο ιστορικό», αλλά δεν έδωσε λεπτομέρειες.
+
+太陽系是一个受太阳引力约束在一起的恆星系统,包括太阳以及直接或间接围绕太阳运动的天体[a]。在直接围绕太阳运动的天体中,最大的八颗被称为行星[b],其余的天体要比行星小很多,比如矮行星、太阳系小天體的小行星和彗星。軌道間接围绕太陽运动的天體是衛星,其中有兩顆比最小的行星水星還要大[c]。
+
+太阳系的形成大约始于46亿年前一个巨型星际分子云的引力坍缩。太阳系内絕大部分的质量都集中于太阳,余下的天体中,质量最大的是木星。位于太阳系内侧的是四颗较小的行星,分别是水星、金星、地球和火星,它们被称为类地行星,主要由岩石和金属构成。外侧的四颗行星被称为巨行星,其质量比类地行星要大得多。其中最大的两颗是木星和土星,它们都是气态巨行星,主要成分是氢和氦。最外侧的两颗行星是天王星和海王星,它们是冰巨星,主要由一些熔点比氢和氦更高的挥发成分组成,比如水、氨和甲烷。几乎所有的行星都在靠近黄道平面的轨道上运行。
+
+太陽系也包含許多較小的天體[d]位於火星和木星軌道之間的主小行星帶,其中的大部分天体都是像类地行星那样由岩石和金属组成。在海王星轨道之外是柯伊伯带和离散盘,包含了有大量的海王星外天体,主要由冰组成,再往外还有新发现的类塞德娜天体(sednoid),其中有几十甚至上万颗因為足够大,能靠自身的重力形成球体[10],称為矮行星。已經被確認是矮行星的包括小行星帶的穀神星,和海王星外天體的冥���星和鬩神星。[d]除了這兩個區域,还有大量的小型天体自由的运动在两个区域之间,包括彗星,還有半人馬小行星和行星際塵雲。有6顆行星、4顆以上的矮行星和一些小天體都有天然的衛星環繞著。[e]通常都依據月球被稱為衛星。太阳系外侧的每颗行星都被由尘埃和小天体构成的行星环环绕着。
+
+太陽風是從太阳向外流出的帶電粒子流,在星際物質中形成了一個氣泡狀區域,被称为太阳圈(或日球层)。日球層頂是太陽風和星際物質的壓力達到平衡的位置,它延伸到離散盤的邊緣。歐特雲,被認為是長週期彗星的來源地,其位置可能比日球层顶还要远1,000多倍。太阳系位于银河系的猎户臂上,与银河系中心的距离约26,000光年。
+名詞解釋
+参见:行星定義
+太陽系的行星和矮行星。圖中仅大小按比例绘制,距離不依比例。
+
+軌道環繞太陽的天體被分為三類:行星、矮行星、和太陽系小天體。
+
+行星是環繞太陽且質量夠大的天體。這類天體:
+
+ 有足夠的質量使本身的形狀成為球體;
+ 有能力清空鄰近軌道的小天體。
+
+能成為行星的天體有8個:水星、金星、地球、火星、木星、土星、天王星和海王星。
+
+在2006年8月24日,國際天文聯合會重新定義行星這個名詞,首次將冥王星排除在大行星外,並將冥王星、穀神星和鬩神星組成新的分類:矮行星[11]。矮行星不需要將鄰近軌道附近的小天體清除掉,其他可能成為矮行星的天體還有塞德娜、厄耳枯斯、和創神星。從第一次發現的1930年直至2006年,冥王星被當成太陽系的第九顆行星。但是在20世紀末期和21世紀初,許多與冥王星大小相似的天體在太陽系內陸續被發現,特別是鬩神星更明確的被指出比冥王星大。
+
+環繞太陽運轉的其他天體都屬於太陽系小天體[6]。
+
+衛星(如月球之類的天體),由於不是環繞太陽而是環繞行星、矮行星或太陽系小天體,所以不屬於太陽系小天體。
+
+天文學家在太陽系內以天文單位(AU)來測量距離。1AU是地球到太陽的平均距離,大約是149,597,871公里(92,955,807英里)。冥王星與太陽的距離大約是39AU,木星則約是5.2AU。最常用在測量恆星距離的長度單位是光年,1光年大約相當於63,240天文單位。行星與太陽的距離以公轉週期為周期變化著,最靠近太陽的位置稱為近日點,距離最遠的位置稱為遠日點。
+
+有時會将太陽系非正式地分成幾個不同的區域:“內太陽系”,包括四顆類地行星和主要的小行星帶;其餘的是“外太陽系”,包含小行星帶之外所有的天體[12]。其它的定義還有海王星以外的區域,而將四顆大型行星稱為“中間帶”[13]。
+發現和探測
+主条目:太陽系的探測和發現
+安德烈亞斯·塞拉里烏斯的插圖:哥白尼體系,出自Harmonia Macrocosmica(1660年)。
+
+在历史上的很长一段时期,人类都没有认识或理解到太阳系的概念。直到中世纪晚期的文艺复兴时代,大多数人仍认为地球是静止不动的,处于宇宙的中心,与那些穿过天空的物体是截然不同的。古希腊的哲学家阿里斯塔克斯曾经推测了日心说体系,但是,直到尼古拉·哥白尼才提出了第一个日心说宇宙的数学模型[14][15]。到了17世纪,伽利略·伽利莱、约翰内斯·开普勒和艾萨克·牛顿拓展了人们对物理学的理解,人们开始普遍接受地球围绕太阳运动的观念,认为地球和其他行星遵循同样的物理规律。望远镜的发明,使人们发现了更多的行星和卫星。望远镜改进和无人航天器的应用,使人们得以对其他行星的地质现象进行研究,比如山、坑穴等,另外还可以气象现象进行观察,比如云、沙尘暴和冰帽等。
+望遠鏡的觀測
+主条目:太陽系年表
+艾薩克·牛頓的望遠鏡複製品
+
+太陽系的第一次探測是由望遠鏡開啟的,始於天文學家首度開始繪製這些因光度暗淡而肉眼看不見的天體之際。
+
+伽利略是第一位發現太陽系天體細節的天文學家。他發現月球的火山口,太陽的表面有黑子,木星有4顆衛星環繞著[16]。惠更斯追隨著伽利略的發現,發現土星的衛星泰坦和土星環的形狀[17]。後繼的乔瓦尼·多梅尼科·卡西尼發現了4顆土星的衛星,還有土星環的卡西尼縫、木星的大紅斑[18]。
+
+愛德蒙·哈雷认识到在1705年出現的彗星,實際上是每隔75-76年就會重複出現的一顆彗星,現在稱為哈雷彗星。這是除了行星之外的天體會圍繞太陽公轉的第一個證據[19]。
+
+1781年,威廉·赫歇耳在觀察一顆它認為的新彗星時,戒慎恐懼的宣布在金牛座發現了彗星。事實上,它的軌道顯示是一顆行星,天王星,這是第一顆被發現的行星[20]。
+
+1801年,朱塞普·皮亞齊發現穀神星,這是位於火星和木星軌道之間的一個小世界,而一開始他被當成一顆行星。然而,接踵而來的發現使在這個區域內的小天體多達數以萬計,導致他們被重新歸類為小行星[21]。
+
+到了1846年,天王星軌道的誤差導致許多人懷疑是不是有另一顆大行星在遠處對它施力。埃班·勒维耶的計算最終導致了海王星的發現[22]。在1859年,因為水星軌道的近日點有一些牛顿力学无法解释的微小运动(「水星近日點進動」),因而有人假設有一顆水內行星祝融星(中文常译为“火神星”)存在;但这一运动最终被证明可以用广义相对论来解释,但某些天文学家仍未放弃对“水内行星”的探寻。
+
+為解釋外行星軌道明顯的偏差,帕西瓦尔·罗威尔認為在其外必然還有一顆行星存在,並稱之為X行星。在他過世後,他的羅威爾天文台繼續搜尋的工作,終於在1930年由汤博發現了冥王星。但是,冥王星是如此的小,實在不足以影響行星的軌道,因此它的發現純屬巧合。就像穀神星,他最初也被當作行星,但是在鄰近的區域內發現了許多大小相近的天體,因此在2006年冥王星被國際天文學聯合會重新分類為矮行星[22]。
+
+在1992年,夏威夷大學的天文學家大衛·朱維特和麻省理工學院的珍妮·劉發現1992 QB1,被證明是一個冰冷的、類似小行星帶的新族群,也就是現在所知的柯伊伯带,冥王星和凱倫都只是其中的成員[23][24]。
+
+米高·布朗、乍德·特魯希略和大衛·拉比諾維茨在2005年宣布發現的鬩神星是比冥王星大的離散盤上天體,是在海王星之後繞行太陽的最大天體[25]。
+太空船的觀測
+主条目:太陽系探索時間線
+藝術家筆下的先鋒10號,它在1983年飛越冥王星的軌道,最後的訊息是在2003年傳送回來的,當時的距離大約是82天文單位。這艘35歲高齡的太空船目前正以每小時27,000公里的速度遠離太陽[26]。
+
+自從进入太空時代,許多的探測都是各國的太空機構所組織和執行的無人太空船探測任務。
+
+太陽系內所有的行星都已經被由地球發射的太空船探訪,進行了不同程度的各種研究。雖然都是無人的任務,人類還是能觀看到所有行星表面近距離的照片,在有登陸艇的情況下,還進行了對土壤和大氣的一些實驗。
+
+第一個進入太空的人造天體是前蘇聯在1957年發射的史潑尼克一號,成功的環繞地球一年之久。美國在1959年發射的探險家6號,是第一個從太空中送回影像的人造衛星。
+
+第一個成功的飛越過太陽系內其他天體的是月球1號,在1959年飛越了月球。最初是打算撞擊月球的,但卻錯過了目標成為第一個環繞太陽的人造物體。水手2號是第一個環繞其他行星的人造物體,在1962年繞行金星。第一顆成功環繞火星的是1964年的水手4號。直到1974年才有水手10號前往水星。
+暗淡藍點是航海家1號從60億公里外拍攝的地球影像(圓圈中的點)。條狀的光紋是來自太陽的繞射光芒(延伸到框架的左邊)。
+
+探測外行星的第一艘太空船是先鋒10號,在1973年飛越木星。在1979年,先驱者11号成為第一艘拜訪土星的太空船。航海家計畫在1977年先後發射了兩艘太空船進行外行星的大巡航,在1979年探訪了木星,1980和1981年先後訪視了土星。航海家2號繼續在1986年接近天王星和在1989年接近海王星。航海家太空船已經遠離海王星軌道外,在發現和研究終端震波、日鞘和日球層頂的路徑上繼續前進。依據NASA的資料,兩艘航海家太空船已經在距離太陽大約93天文單位處接觸到終端震波[27][28]。
+
+還沒有太空船曾經造訪過柯伊伯带天體。而在2006年1月19日發射的新視野號將成為第一艘探測這個區域的人造太空船。這艘無人太空船預計在2015年飛越冥王星。如果这被證明是可行的,任務將會擴大以繼續觀察一些柯伊伯带的其他天體[29]。
+
+在1966年,月球成為除了地球之外第一個有人造衛星繞行的太陽系天體(月球10號),然後是火星在1971年(水手9號),金星在1975年(金星9號),木星在1995年(伽利略號,也在1991年首先飛掠過小Gaspra),愛神星在2000年(會合-舒梅克號),和土星在2004年(卡西尼號-惠更斯號)。信使號太空船在2011年3月18日開始第一次繞行水星的軌道;同一時間,黎明號太空船將設定軌道在2011年環繞灶神星,並在2015年探索穀神星。
+
+第一個在太陽系其它天體登陸的计划是前蘇聯在1959年登陸月球的月球2號。從此以後,抵達越來越遙遠的行星,在1966年計畫登陸或撞擊金星(金星3號),1971年到火星(火星3號��,但直到1976年才有維京1號成功登陸火星,2001年登陸愛神星(會合-舒梅克號),和2005年登陸土星的衛星泰坦(惠更斯)。伽利略太空船也在1995年拋下一個探測器進入木星的大氣層;由於木星沒有固體的表面,這個探測器在下降的過程中被逐漸增高的溫度和壓力摧毀掉。
+載人探測
+
+載人的探測目前仍被限制在鄰近地球的環境內。第一個進入太空(以超過100公里的高度來定義)的人是前蘇聯的太空人尤里·加加林,於1961年4月12日搭乘東方一號升空。第一個在地球之外的天體上漫步的是美國宇航員尼爾·阿姆斯特朗,它是在1969年7月21日的阿波羅11號任務中,於月球上完成的。美國的太空梭是能夠重覆使用的太空船,前蘇聯也曾經開發太空梭並已完成一次的無人太空梭升空任務,蘇聯瓦解後,俄羅斯無力繼續維護任其荒廢。第一個空間站是前蘇聯的禮炮1號。在2004年,太空船1號成為在私人的基金資助下第一個進入次軌道的太空船。同年,美国總統乔治·沃克·布什宣布太空探測的远景规划:替換老舊的太空梭、重返月球、甚至載人前往火星,但這計畫在幾年後遭到終止。
+構造和成分
+
+Storia delle osservazioni
+Rappresentazione del 1500 del sistema solare del cartografo Bartolomeu Velho con la Terra al centro dell'universo
+
+Sebbene molti dei maggiori corpi celesti del sistema solare fossero già conosciuti sin dai tempi dell'antichità, il concetto stesso era ignorato in quanto vigeva per lo più un'idea di sistema geocentrico con la Terra al centro dell'universo[7]. Uno dei primi a immaginare un sistema eliocentrico fu Aristarco di Samo[8][9], ma le sue idee non presero piede nella comunità dei filosofi e pensatori di allora.[10]
+
+Fu solo nel XVI secolo che Niccolò Copernico[7] propose la visione moderna del sistema solare, con al centro il Sole e i pianeti conosciuti allora a orbitare intorno. Gli unici corpi del sistema solare conosciuti erano però solamente i quattro pianeti terrestri, Giove, Saturno, il Sole e la Luna. Nel secolo successivo, con l'invenzione del telescopio di Galileo Galilei, vennero scoperti altri corpi minori[11], come i satelliti medicei, gli anelli di Saturno e alcune comete e per circa 200 anni non si pensava che potessero esserci altri oggetti nel sistema solare, in particolare era ferma la convinzione che i pianeti fossero solo quelli allora conosciuti.
+Frontespizio della scoperta del nuovo pianeta Cerere Ferdinandea
+
+Nel 1781, la scoperta di Urano da parte di William Herschel[12] mise in discussione i preconcetti che la comunità scientifica aveva, generando dubbi relativamente alla possibilità che esistessero pianeti transuranici.
+
+Pochi anni dopo, nel 1801, Giuseppe Piazzi dichiarò di aver scoperto un nuovo pianeta, tra le orbite di Marte e Giove[13]; si trattava in realtà di Cerere. La conclusione avvenne escludendo che potesse trattarsi di una cometa e non conoscendo altri oggetti diversi da pianeti e comete, del tutto ignaro che avesse scoperto un nuovo tipo di oggetto, l'asteroide. Da allora le scoperte di nuovi oggetti si moltiplicarono, in particolare vennero scoperti tanti nuovi asteroidi. Nel 1846 venne scoperto un pianeta in modo del tutto rivoluzionario: prima dell'osservazione diretta, si calcolarono le perturbazioni dell'orbita di Urano e se ne dedusse che doveva esistere un pianeta in un punto preciso dello spazio per giustificare le discrepanze osservate[14]. Pochi giorni dopo, Johann Gottfried Galle e Heinrich Louis d'Arrest confermarono la presenza di Nettuno a meno di un grado di distanza dal punto calcolato.
+
+Nel 1930, la scoperta di Plutone aumentò il numero di pianeti conosciuti a nove[15], ritenuto allora un oggetto di massa molto maggiore di quanto effettivamente sia. Negli anni '50 Jan Oort ipotizzò l'esistenza di un vivaio di comete ben al di là delle orbite dei pianeti conosciuti[16], situato a decine di migliaia di UA dal Sole, la nube di Oort (la parte più esterna del Sistema Solare) che quando venivano perturbate modificavano consistentemente la propria orbita fino ad arrivare nella zona interna del sistema. Nel 1992, la scoperta di Albion riavviò la ricerca di oggetti transnettuniani[17]. L'avvento di sistemi automatici di ricerca permise la scoperta di migliaia di oggetti dal diametro tra i 50 e 2500 km. La scoperta di Eris, di dimensioni simili a Plutone, nel 2005 mise in discussione la stessa definizione di pianeta[18], che fu cambiata e formalizzata nel 2006 dall'Unione Astronomica Internazionale, declassando Plutone a pianeta nano e riportando a otto il numero totale di pianeti[19].
+Formazione
+Lo stesso argomento in dettaglio: Formazione ed evoluzione del sistema solare.
+Rappresentazione artistica del sistema solare primordiale
+
+Le teorie più accreditate sulla formazione del sistema solare, descrivono la sua nascita 4,6 miliardi di anni fa a partire dalla frammentazione e dal collasso gravitazionale di una gigantesca nube molecolare dal diametro di 65 anni luce[20]. Uno di questi frammenti, dalle dimensioni iniziali di 2000-20000 unità astronomiche, collassò in quello che è noto come disco protoplanetario[21]. I componenti principali di questa fucina primordiale erano per il 98% idrogeno, elio e litio primordiali, formatisi con la nucleosintesi poco dopo il Big Bang, e altri elementi più pesanti espulsi da stelle formatesi ed esplose in qualche generazione precedente[22]. Al centro collassò una quantità di gas e polveri tale da raggiungere la massa necessaria per innescare le reazioni termonucleari, e nacque una protostella, mentre i pianeti si generarono per accrescimento, formando all'inizio qualche decina di piccoli pianeti che nel sistema caotico primordiale ogni tanto si scontravano per formare corpi sempre più grandi[23].
+
+La contrazione causò un aumento della velocità di rotazione e della forza centrifuga del sistema. Così la nube si sarebbe appiattita, assumendo un aspetto simile a un disco rotante intorno al Sole[24].
+
+Mentre il nucleo del proto-Sole si riscaldava fino a raggiungere le temperature necessarie per le reazioni termonucleari, nel disco circostante accrescevano alcuni corpi attraverso delle collisioni e attirando frammenti più piccoli presenti nello spazio circostante. Si sarebbero formati così i protopianeti, dai quali sarebbero derivati gli attuali pianeti, mentre il proto-Sole si trasformava in una stella gialla e stabile.
+
+Nelle prime fasi di attività solare, la temperatura nel sistema solare interno era troppo alta per permettere a elementi leggeri di condensare; i pianeti interni tendevano ad accrescersi con elementi pesanti, diventando in futuro pianeti rocciosi[24]. Il vento solare contribuiva a spazzare via gli elementi leggeri verso le regioni più esterne, soprattutto l'idrogeno e l'elio. Il sistema solare esterno manteneva una temperatura relativamente bassa, permettendo a sostanze come metano e acqua di condensare[24]. La differenza in questo tipo di accrescimento ha determinato le caratteristiche dei pianeti, piccoli e rocciosi all'interno, per la scarsa presenza di elementi pesanti e giganti all'esterno, che gli hanno permesso di catturare i gas di idrogeno e elio sparsi nello spazio[24].
+Struttura
+
+Il principale corpo celeste del sistema solare è il Sole, una stella della sequenza principale di classe spettrale G2 V (nana gialla[25]), contenente il 99,86%[26] di tutta la massa conosciuta nel sistema solare. Giove e Saturno, i due pianeti più massicci che orbitano attorno al Sole, costituiscono più del 90% della massa restante. La maggior parte dei grandi oggetti in orbita intorno al Sole sono in un piano simile a quello dell'orbita terrestre, chiamata eclittica[27]. Tipicamente, il piano di orbita dei pianeti è molto vicino a quello dell'eclittica mentre le comete e gli oggetti della cintura di Kuiper hanno un angolo significativamente maggiore rispetto al nostro.
+
+Tutti i pianeti e la maggior parte degli altri oggetti orbitano nello stesso senso della rotazione del Sole, in senso antiorario dal punto di vista di un osservatore situato al di sopra del polo nord solare. Certi oggetti orbitano in un senso orario, come la cometa di Halley[28].
+
+Le traiettorie degli oggetti che gravitano intorno al sole seguono le leggi di Keplero[29]. Sono approssimativamente delle ellissi di cui uno dei fuochi è il Sole. Le orbite dei pianeti sono quasi circolari mentre quelle dei corpi più piccoli presentano una maggiore eccentricità e possono risultare molto ellittiche.
+
+La distanza di un corpo dal Sole varia durante la sua rivoluzione. Il punto più vicino al sole dell'orbita di un corpo si chiama perielio, mentre il più lontano è l'afelio[30].
+
+Il sistema solare è convenzionalmente diviso in due zone. Il sistema solare interno[31] include i quattro pianeti rocciosi e la cintura di asteroidi. Il resto del sistema viene considerato sistema solare esterno[32].
+
+La maggioranza dei pianeti del sistema solare possiede dei corpi in rotazione intorno ad essi, chiamati satelliti naturali o lune. I quattro pianeti più grandi hanno anche degli anelli planetari.
+Il sistema solare; i pianeti sono raffigurati in scala per grandezza, mentre la scala delle distanze è fornita in basso a destra. Sono indicati inoltre i 5 asteroidi più massicci, i plutoidi e le lune maggiori.
+Alcuni software anche open-source come WorldWide Telescope permettono di vedere l'intero Sistema Solare e i suoi migliaia di oggetti celesti, con la rotazione differenziata degli stessi in qualsiasi istante di tempo passato e futuro.
+Composizione
+Gli elementi chimici che predominano nel sistema solare sono idrogeno ed elio primordiali, concentrati per lo più nel Sole, dove la loro massa costituisce circa il 98%, e nei due pianeti più grandi, Giove e Saturno. In minori percentuali, sono presenti tutti gli elementi della tavola periodica nelle loro forme stabili e nei principali isotopi. Fisicamente, quasi tutti i corpi si trovano in rotazione attorno al centro di massa del sistema nella stessa direzione, contribuendo in modo differente al momento angolare del sistema solare; stranamente, il Sole, nonostante la sua notevole massa, contribuisce solo allo 0,5%[33] del momento angolare totale, essendo molto vicino al baricentro.
+
+
+Das (auch unser) Sonnensystem ist das Planetensystem, in dem sich die Erde und damit alle bekannten Lebewesen befinden. Es besteht aus der Sonne, acht sie umkreisenden Planeten (von innen nach außen: Merkur, Venus, Erde, Mars, Jupiter, Saturn, Uranus und Neptun[2]), deren natürlichen Satelliten, den Zwergplaneten, anderen Kleinkörpern (Kometen, Asteroiden und Meteoroiden) und aus unzähligen Gas- und Staubteilchen, die durch die Anziehungskraft der Sonne an diese gebunden sind.
+
+Die Internationale Astronomische Union definiert den Pluto seit 2006 als Zwergplanet und nicht mehr als den äußersten Planeten des Sonnensystems.
+Inhaltsverzeichnis
+
+ 1 Aufbau
+ 1.1 Allgemeine Struktur
+ 1.2 Zone der Planeten
+ 1.3 Äußere Zonen
+ 1.4 Ausmaße
+ 2 Umgebung
+ 2.1 Lokale stellare Nachbarschaft
+ 2.2 Milchstraßensystem
+ 3 Entstehung
+ 3.1 Urwolke
+ 3.2 Alter
+ 3.3 Entstehung der Planeten
+ 3.4 Offene Fragen
+ 4 Siehe auch
+ 5 Literatur
+ 6 Weblinks
+ 7 Einzelnachweise
+
+Aufbau
+Allgemeine Struktur
+
+Die Sonne ist der Zentralstern des Sonnensystems. Da sie 99,86 % der Gesamtmasse des Systems hat, ist sie sehr nahe dem Baryzentrum des Sonnensystems. In der Reihenfolge ihres Abstands von der Sonne folgen die terrestrischen Planeten Merkur, Venus, Erde und Mars, die den inneren Teil des Planetensystems ausmachen. Den äußeren Teil bilden die Gasplaneten Jupiter, Saturn, Uranus und Neptun. Weitere Begleiter der Sonne sind neben Zwergplaneten Millionen von Asteroiden (auch Planetoiden oder Kleinplaneten genannt) und Kometen, die vorwiegend in drei Kleinkörperzonen des Sonnensystems um die Sonne kreisen: dem Asteroidengürtel zwischen den inneren und den äußeren Planeten, dem Kuipergürtel jenseits der äußeren Planeten und der Oortschen Wolke ganz außen.
+
+Die Planetenbahnen sind nur wenig gegenüber der Erdbahnebene geneigt, um höchstens 7°, sie liegen also in einer flachen Scheibe. Bei den meisten der bisher (2019) bekannten Kleinplaneten, speziell denen des Kuipergürtels, beträgt die Neigung weniger als 30°. Für die Oortsche Wolke wird dagegen eine Kugelform angenommen.
+
+Innerhalb der von den einzelnen Sonnenbegleitern beherrschten Raumbereiche – ihrer Hill-Sphären – befinden sich oft kleinere Himmelskörper als umlaufende Begleiter dieser Objekte. Nach dem altbekannten Mond der Erde werden sie analog ebenfalls als Monde, aber auch als Satelliten oder Trabanten bezeichnet. Bis auf den Erdmond und den Plutomond Charon sind sie zumindest bei den Planeten und Zwergplaneten wesentlich kleiner als ihr Hauptkörper. Mondlose Ausnahmen unter den Planeten sind nur Merkur und Venus. Eine definitiv untere Grenzgröße, ab der man wie bei den Bestandteilen der Ringe der Gasplaneten nicht mehr von einem Mond spricht, wurde noch nicht offiziell festgelegt.
+
+Der Durchmesser der Sonne ist mit etwa 1,39 Millionen Kilometern bei weitem größer als der Durchmesser aller anderen Objekte im System. Die größten dieser Objekte sind die acht Planeten, die vier Jupitermonde Ganymed, Kallisto, Europa und Io (die Galileischen Monde), der Saturnmond Titan und der Erdmond. Zwei Drittel der restlichen Masse von 0,14 % entfallen dabei auf Jupiter. (Siehe auch Liste der größten Objekte im Sonnensystem.)
+
+Als Folge der Entstehung des Sonnensystems bewegen sich alle Planeten, Zwergplaneten und der Asteroidengürtel auf ihrer Umlaufbahn um die Sonne im gleichen Umlaufsinn, den man rechtläufig nennt. Sie umrunden die Sonne von Norden gesehen gegen den Uhrzeigersinn. Die meisten größeren Monde bewegen sich ebenfalls in diese Richtung um ihren Hauptkörper. Auch die Rotation der meisten größeren Körper des Sonnensystems erfolgt in rechtläufigem Drehsinn. Von den Planeten dreht sich lediglich die Venus entgegengesetzt, und die Rotationsachse von Uranus liegt nahezu in seiner Bahnebene.
+Zone der Planeten
+Die Umlaufbahnen der Planeten (ein Rasterquadrat besitzt jeweils die Kantenlänge 100 Mio. km)
+Die vier inneren Planeten
+Mars und die vier äußeren Planeten
+
+Der Sonne am nächsten befinden sich die inneren, erdähnlichen Planeten Merkur (Abstand zur Sonne 57,9 Mio. km bzw. 0,39 AE), Venus (108,2 Mio. km bzw. 0,72 AE), Erde (149,6 Mio. km bzw. 1 AE) und Mars (227,9 Mio. km bzw. 1,52 AE). Ihr Durchmesser beträgt zwischen 4878 km und 12756 km, ihre Dichte zwischen 3,95 g/cm³ und 5,52 g/cm³. Innerhalb der habitablen Zone um die Sonne befinden sich jedoch nur die Erde und, je nach Modell, noch ganz knapp der Mars.
+
+Zwischen Mars und Jupiter befindet sich der sogenannte Asteroidengürtel, eine Ansammlung von Kleinplaneten. Die meisten dieser Asteroiden sind nur wenige Kilometer groß (siehe Liste der Asteroiden) und nur wenige haben einen Durchmesser von 100 km oder mehr. Ceres ist mit etwa 960 km der größte dieser Körper und gilt als Zwergplanet. Die Bahnen der Asteroiden sind teilweise stark elliptisch, einige kreuzen sogar die Merkur- (Icarus) beziehungsweise die Neptunbahn (Dioretsa). Zu den äußeren Planeten zählen die Gasriesen Jupiter (778,3 Mio. km bzw. 5,2 AE) und Saturn (1,429 Mrd. km bzw. 9,53 AE) sowie die Eisriesen Uranus (2,875 Mrd. km bzw. 19,2 AE) und Neptun (4,504 Mrd. km bzw. 30,1 AE) mit Dichten zwischen 0,7 g/cm³ und 1,66 g/cm³.
+Die gerundeten (und genauen) Verhältnisse
+zwischen den Umlaufzeiten der Planeten
+Merkur Merkur 2:5 (2:5,11) Venus Venus
+Venus Venus 8:13 (8:13,004) Erde Erde
+Erde Erde 1:2 (1:1,88) Mars Mars
+Mars Mars 1:6 (1:6,31) Jupiter Jupiter
+Jupiter Jupiter 2:5 (2:4,97) Saturn Saturn
+Saturn Saturn 1:3 (1:2,85) Uranus Uranus
+Uranus Uranus 1:2 (1:1,96) Neptun Neptun
+
+Die mittleren Abstände der Planeten von der Sonne lassen sich durch mathematische Reihen wie der Titius-Bode-Reihe genähert beschreiben. Diese gewisse Regelmäßigkeit der Bahnabstände dürfte auf Resonanzeffekte bei der Entstehung des Sonnensystems zurückzuführen sein. Dass sich der mittlere Abstand des Asteroidengürtels ebenfalls in dieser Reihe einordnen lässt, der von Neptun jedoch nicht, gab und gibt Anlass zu Spekulationen über kosmische Katastrophen.
+
+Am nächsten können sich Merkur und Venus mit einer minimalen Distanz von 0,26 AE kommen. Geringfügig größer ist die minimale Entfernung von Venus und Erde. Nimmt man die mittleren Bahnradien, so sind Venus und Erde die Planeten mit der geringsten Distanz zueinander (41 Mio. km oder knapp 0,28 AE).
+
+Die Planeten Merkur, Venus, Mars, Jupiter und Saturn waren schon im Altertum als Wandelsterne bekannt und wurden mit einzelnen Göttern in Verbindung gebracht. Die nach Göttern der Römischen Mythologie gewählten Namen haben sich durchgesetzt. Auch die 1781 und 1846 entdeckten Planeten Uranus und Neptun sowie der 1930 entdeckte Zwergplanet Pluto – bis 2006 ebenfalls als Planet eingestuft – wurden aus Gründen der Tradition in ähnlicher Weise benannt.
+
+Merksatz zur Reihenfolge der Planeten
+
+Um sich die Planeten in ihrer Reihenfolge – nach zunehmendem Sonnenabstand – leichter einprägen zu können, wurden verschiedene Merksprüche ersonnen, meist sogenannte Eselsbrücken in Form eines Akrostichons, z. B.
+
+ Mein Vater erklärt mir jeden Sonntag unseren Nachthimmel.[3] alternativ „… unsere Nachbarplaneten.“
+
+Ein Merkspruch, der auch die Kleinkörper berücksichtigt, lautet:
+
+ Mein Vater erklärt mir an jedem Sonntag unsere natürliche kosmische Ordnung.[3]
+
+zu lesen als Merkur Venus Erde Mars Asteroiden Jupiter Saturn Uranus Neptun Kuipergürtel Oortsche Wolke.
+Siehe auch: Liste der Planeten des Sonnensystems
+Äußere Zonen
+Die Umlaufbahnen der Objekte des Sonnensystems im Maßstab
+
+Seit den 1990er-Jahren wurden tausende Objekte gefunden, die sich jenseits der Neptunbahn bewegen. Fast alle dieser Objekte sind 4,5–7,5 Milliarden km (30–50 AE) von der Sonne entfernt und bilden dort den Kuipergürtel. Er ist ein Reservoir für Kometen mit mittleren Umlaufperioden. Die Objekte dieser Zone sind wahrscheinlich nahezu unveränderte Überbleibsel aus der Entstehungsphase des Sonnensystems; man nennt sie deshalb auch Planetesimale.
+
+Der Kuipergürtel enthält eine Reihe von Zwergplaneten wie Pluto, (136199) Eris, (136472) Makemake, (136108) Haumea und eine Reihe weiterer Objekte, die ihrer Größe nach wahrscheinlich Zwergplaneten sind.
+
+Der Sonnenwind wirkt im interplanetaren Raum ungehindert bis in den Kuipergürtel und verdrängt die interstellare Materie. Jenseits des Kuipergürtels verlangsamt und verdichtet sich der Teilchenstrom der Sonne durch die Wechselwirkung mit dem interstellaren Medium und bildet als äußere Schale der Heliosphäre die Heliohülle (heliosheath). Die Grenzschicht zwischen der Heliosphäre und dem interstellaren Medium ist die Heliopause in einer Entfernung von circa 120 AE (dem 4-fachen Abstand Neptun–Sonne).
+
+Außerhalb der Heliopause befindet sich bis zu einem Abstand zur Sonne von circa 1,5 Lichtjahren (etwa 100.000 AE) theoretisch die Oortsche Wolke. Durch den Einfluss der Gravitation vorbeiziehender Sterne werden aus ihr vermutlich Körper herausgelöst und fallen als langperiodische Kometen in die inneren Bereiche des Sonnensystems. Einige dieser Kometen verbleiben dann auf stark elliptischen Bahnen in der Nähe der Sonne, andere werden von den Planeten, insbesondere von Jupiter, gestört und abgelenkt, so dass sie aus dem Sonnensystem katapultiert werden, auf Planeten oder in die Sonne stürzen.
+Ausmaße
+
+Es gibt keine allgemein anerkannte Definition, wie weit sich das Sonnensystem erstreckt. Oft wurde das Ausmaß des Sonnensystems mit dem der Heliosphäre gleichgesetzt. Aber mit der Entdeckung weit entfernter Transneptunischer Objekte war bewiesen, dass es auch jenseits der Heliopause gravitativ an die Sonne gebundene Objekte gibt.
+
+Da astronomische Dimensionen für die meisten Menschen schwer vorstellbar sind, ist ein maßstabsgerecht verkleinertes Modell des Sonnensystems oder der Besuch eines Planetenweges hilfreich, um sich die Größenverhältnisse und Distanzen der Objekte zu veranschaulichen.
+
+
+Структура
+Орбиты объектов Солнечной системы, в масштабе (по часовой стрелке, начиная с верхней левой части)
+
+Центральным объектом Солнечной системы является Солнце — звезда главной последовательности спектрального класса G2V, жёлтый карлик. В Солнце сосредоточена подавляющая часть всей массы системы (около 99,866 %), оно удерживает своим тяготением планеты и прочие тела, принадлежащие к Солнечной системе[21]. Четыре крупнейших объекта — газовые гиганты — составляют 99 % оставшейся массы (при этом большая часть приходится на Юпитер и Сатурн — около 90 %).
+
+Большинство крупных объектов, обращающихся вокруг Солнца, движется практически в одной плоскости, называемой плоскостью эклиптики. В то же время кометы и объекты пояса Койпера часто обладают большими углами наклона к этой плоскости[22][23].
+
+Все планеты и большинство других объектов обращаются вокруг Солнца в одном направлении с вращением Солнца (против часовой стрелки, если смотреть со стороны северного полюса Солнца). Есть исключения, такие как комета Галлея. Самой большой угловой скоростью обладает Меркурий — он успевает совершить полный оборот вокруг Солнца всего за 88 земных суток. А для самой удалённой планеты — Нептуна — период обращения составляет 165 земных лет.
+
+Бо́льшая часть планет вращается вокруг своей оси в ту же сторону, что и обращается вокруг Солнца. Исключения составляют Венера и Уран, причём Уран вращается практически «лёжа на боку» (наклон оси около 90°). Для наглядной демонстрации вращения используется специальный прибор — теллурий.
+
+Многие модели Солнечной системы условно показывают орбиты планет через равные промежутки, однако в действительности, за малым исключением, чем дальше планета или пояс от Солнца, тем больше расстояние между её орбитой и орбитой предыдущего объекта. Например, Венера приблизительно на 0,33 а.е. дальше от Солнца, чем Меркурий, в то время как Сатурн на 4,3 а.е. дальше Юпитера, а Нептун на 10,5 а.е. дальше Урана. Были попытки вывести корреляции между орбитальными расстояниями (например, правило Тициуса — Боде)[24], но ни одна из теорий не стала общепринятой.
+
+Орбиты объектов вокруг Солнца описываются законами Кеплера. Согласно им, каждый объект обращается по эллипсу, в одном из фокусов которого находится Солнце. У более близких к Солнцу объектов (с меньшей большой полуосью) больше угловая скорость вращения, поэтому короче период обращения (год). На эллиптической орбите расстояние объекта от Солнца изменяется в течение его года. Ближайшая к Солнцу точка орбиты объекта называется перигелий, наиболее удалённая — афелий. Каждый объект движется быстрее всего в своём перигелии и медленнее всего - в афелии. Орбиты планет близки к кругу, но многие кометы, астероиды и объекты пояса Койпера имеют сильно вытянутые эллиптические орбиты.
+
+Большинство планет Солнечной системы обладает собственными подчинёнными системами. Многие окружены спутниками, некоторые из спутников по размеру превосходят Меркурий. Большинство крупных спутников находится в синхронном вращении, одна их сторона постоянно обращена к планете. Четыре крупнейшие планеты — газовые гиганты — обладают также кольцами, тонкими полосами крошечных частиц, обращающимися по очень близким орбитам практически в унисон.
+Терминология
+
+Иногда Солнечную систему разделяют на регионы. Внутренняя часть Солнечной системы включает четыре планеты земной группы и пояс астероидов. Внешняя часть начинается за пределами пояса астероидов и включает четыре газовых гиганта[25]. Планеты внутри области астероидов иногда называют внутренними, а вне пояса — внешними[26]. Однако иногда эти термины используются для нижних (находящихся внутри земной орбиты) и верхних (находящихся за пределами земной орбиты) планет, соответственно[27]. После открытия пояса Койпера наиболее удалённой частью Солнечной системы считают регион, состоящий из объектов, расположенных дальше Нептуна[28].
+
+Все объекты Солнечной системы, обращающиеся вокруг Солнца, официально делят на три категории: планеты, карликовые планеты и малые тела Солнечной системы. Планета — любое тело на орбите вокруг Солнца, оказавшееся достаточно массивным, чтобы приобрести сферическую форму, но недостаточно массивным для начала термоядерного синтеза, и сумевшее очистить окрестности своей орбиты от планетезималей. Согласно этому определению, в Солнечной системе имеется восемь известных планет: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран и Нептун. Плутон (до 2006 года считавшийся планетой) не соответствует этому определению, поскольку не очистил свою орбиту от окружающих объектов пояса Койпера[29]. Карликовая планета — небесное тело, обращающееся по орбите вокруг Солнца; которое достаточно массивно, чтобы под действием собственных сил гравитации поддерживать близкую к округлой форму, но которое не очистило пространство своей орбиты от планетезималей и не является спутником планеты[29]. По этому определению у Солнечной системы имеется пять признанных карликовых планет: Церера, Плутон, Хаумеа, Макемаке и Эрида[30]. В будущем другие объекты могут быть классифицированы как карликовые планеты, например, Седна, Орк и Квавар[31]. Карликовые планеты, чьи орбиты находятся в регионе транснептуновых объектов, называют плутоидами[32]. Оставшиеся объекты, обращающиеся вокруг Солнца, — малые тела Солнечной системы[29].
+
+Термины газ, лёд и камень используют, чтобы описать различные классы веществ, встречающихся повсюду в Солнечной системе. Камень используется, чтобы описать соединения с высокими температурами конденсации или плавления, которые оставались в протопланетной туманности в твёрдом состоянии при почти всех условиях[33]. Каменные соединения обычно включают силикаты и металлы, такие как железо и никель[34]. Они преобладают во внутренней части Солнечной системы, формируя большинство планет земной группы и астероидов. Газы — вещества с чрезвычайно низкими температурами плавления и высоким давлением насыщенного пара, такие как молекулярный водород, гелий и неон, которые в туманности всегда были в газообразном состоянии[33]. Они доминируют в средней части Солнечной системы, составляя большую часть Юпитера и Сатурна. Льды таких веществ, как вода, метан, аммиак, сероводород и углекислый газ[34] имеют температуры плавления до нескольких сотен кельвинов, в то время как их термодинамическая фаза зависит от окружающего давления и температуры[33]. Они могут встречаться как льды, жидкости или газы в различных регионах Солнечной системы, в туманности же они были в твёрдой или газовой фазе[33]. Большинство спутников планет-гигантов содержит ледяные субстанции, также они составляют большую часть Урана и Нептуна (так называемых «ледяных гигантов») и многочисленных малых объектов, расположенных за орбитой Нептуна[34][35]. Газы и льды вместе классифицируют как летучие вещества[36].
+Le Système solaire (avec majuscule), ou système solaire (sans majuscule), est le système planétaire du Soleil, auquel appartient la Terre. Il est composé de cette étoile et des objets célestes gravitant autour d'elle : les huit planètes confirmées et leurs 214 satellites naturels connus (appelés usuellement des « lunes »), les cinq planètes naines et leurs neuf satellites connus, ainsi que des milliards de petits corps (la presque totalité des astéroïdes et autres planètes mineures, les comètes, les poussières cosmiques, etc.).
+
+Le Système solaire fait partie de la galaxie appelée Voie lactée, où il réside dans le bras d'Orion. Il est situé à environ 8 kpc (∼26 100 al) du centre galactique, autour duquel il effectue une révolution en 225 à 250 millions d'années. Il s'est formé il y a un peu moins de 4,6 milliards d'années à partir de l'effondrement gravitationnel d'un nuage moléculaire, suivi de la constitution d'un disque protoplanétaire selon l'hypothèse de la nébuleuse.
+
+De façon schématique, le Système solaire est composé du Soleil, qui le domine gravitationnellement — il comprend 99,85 % de sa masse — et fournit de l'énergie par fusion nucléaire de l'hydrogène en hélium. Par ordre d'éloignement croissant à l'étoile, le Système solaire interne comprend quatre planètes telluriques internes, principalement composées de roches et de métaux (Mercure, Vénus, la Terre et Mars) puis une ceinture d'astéroïdes de petits corps rocheux, dont la planète naine Cérès. Plus loin orbitent les quatre planètes géantes du Système solaire externe : successivement deux géantes gazeuses constituées majoritairement d'hydrogène et d'hélium que sont Jupiter et Saturne — qui contiennent par ailleurs la grande majorité de la masse totale en orbite autour du Soleil — et deux géantes de glaces que sont Uranus et Neptune, contenant une plus grande part de substances volatiles comme l'eau, l'ammoniac et le méthane. Tous ont une orbite proche du cercle et sont concentrés près du plan de l'écliptique, le plan de rotation de la Terre.
+
+Les objets situés au-delà de l'orbite de Neptune, dits transneptuniens, comprennent notamment la ceinture de Kuiper et le disque des objets épars, formés d'objets glacés. Quatre planètes naines glacées se trouvent dans la région transneptunienne et sont également appelées plutoïdes : Pluton — auparavant classée comme planète —, Hauméa, Makémaké et Éris. L'héliopause, limite magnétique du Système solaire, est définie par l'arrêt des vents solaires face aux vents du milieu interstellaire à une centaine d'unités astronomiques, tandis que la limite gravitationnelle du Système solaire se situe bien plus loin encore, jusqu'à une ou deux années-lumière du Soleil, vers laquelle une zone sphérique hypothétique, le nuage de Oort, pourrait exister et être la source des comètes à longue période.
+
+Toutes les planètes du Système solaire à partir de la Terre possèdent des satellites en orbite — certains, tels que Ganymède et Titan, sont plus grands que Mercure —, tandis que chacune des quatre planètes externes est en outre entourée d’un système d'anneaux de poussières et d’autres particules, dont le plus proéminent est celui de Saturne. Toutes les planètes, sauf la Terre, portent les noms de dieux et déesses de la mythologie romaine. La Terre, dotée d'une épaisse atmosphère et recouverte à 71 % de sa surface d'eau liquide, est la seule planète du Système solaire à abriter la vie et une espèce pensante qui agit sur son évolution. Dans l'état des connaissances humaines, cette planète du Système solaire ne connait pas d'équivalent dans l'Univers.
+Terminologie
+Articles connexes : Définition des planètes, Définition des planètes de l'Union astronomique internationale et Planète naine.
+Infographie représentant le Soleil à gauche, puis les planètes et planètes naines ordonnées vers la droite.
+Planètes et planètes naines du Système solaire. Les dimensions du Soleil et des planètes sont à l’échelle, mais pas les distances qui les séparentb.
+
+Depuis la décision prise le 24 août 2006 par l'Union astronomique internationale, les objets ou corps orbitant directement autour du Soleil sont officiellement divisés en trois classes : planètes, planètes naines et petits corps8.
+
+ Une planète est un corps en orbite autour du Soleil, suffisamment massif pour avoir une forme sphérique et avoir nettoyé son voisinage immédiat de tous les objets plus petits9. On connaît huit planètes : Mercure, Vénus, la Terre, Mars, Jupiter, Saturne, Uranus et Neptune qui sont toutes nommées, sauf la Terre, d'après des divinités de la mythologie romaine8,10. La plupart de leurs satellites naturels sont, eux aussi, nommés d'après des personnages de la mythologie grecque ou romaine11.
+ Une planète naine est un corps en orbite autour du Soleil qui, bien que suffisamment massif pour avoir une forme sphérique — concept appelé équilibre hydrostatique —, n’a pas fait place nette dans son voisinage8,9. En 2021, cinq corps sont officiellement désignés de la sorte : Cérès, Pluton, Éris, Makémaké et Hauméa12. D’autres corps pourraient l’être dans le futur, tels que Gonggong, Quaoar, Sedna ou Orcus13,14.
+ Tous les autres objets en orbite directe autour du Soleil sont classés comme petits corps du Système solaire8.
+
+Les 214 satellites naturels — en 2021, 158 sont confirmés et 56 sont non confirmés, donc sans nom —, ou lunes, sont les objets en orbite autour des planètes, des planètes naines et des petits corps du Système solaire plutôt qu'autour du Soleil2. Les statuts ambigus de la Lune et surtout de Charon, qui pourraient former un système binaire avec respectivement la Terre et Pluton, ne sont pas encore définitivement tranchés, bien que ces corps soient toujours classés comme satellites15,16.
+
+La classification proposée par l'Union astronomique internationale ne fait pas l'unanimité. À la suite du vote de 2006, une pétition réunissant les signatures de plus de 300 planétologues et astronomes majoritairement américains — Pluton étant alors la seule planète découverte par un Américain — est lancée pour contester la validité scientifique de la nouvelle définition d'une planète ainsi que son mode d'adoption17,18,19. Les responsables de l'UAI annoncent qu'aucun retour en arrière n'aura lieu et les astronomes jugent très improbable que Pluton puisse être à nouveau considérée comme une planète20,21.
+
+Concernant la majuscule au nom « Système solaire », la forme tout en minuscules est, au sens strict, suffisante, étant donné qu'il n'y a qu'un « système solaire » puisqu'il n'y a qu'un « Soleil ». Cependant, les autres étoiles étant parfois, par analogie, appelées des « soleils », le nom de « système solaire » est de la même façon parfois employé dans un sens général pour signifier « système planétaire » ; « Système solaire », écrit avec une majuscule, permet alors de distinguer notre système planétaire, par ellipse de « système planétaire solaire »22,23.
+
+Die Sonnestelsel bestaan uit die Son en die ander hemelliggame wat deur swaartekrag daaraan gebind is en daarom wentel. Die hemelliggame in ons sonnestelsel bestaan uit die agt planete, hulle 166 bekende mane,[1] vyf dwergplanete en biljoene ander klein liggame. Hierdie klein liggame, of klein sonnestelselvoorwerpe (KSV's), sluit asteroïdes, ysige Kuiper-gordelvoorwerpe, komete, meteoroïdes en interplanetêre stof in. Die Aarde is die derde planeet van die Sonnestelsel.
+
+Die gekarteerde streke van die Sonnestelsel is die Son, vier aardse binnenste planete, die asteroïdegordel, vier buitenste planete (die reuseplanete), die Kuiper-gordel en die verstrooide skyf. Die teoretiese Oort-wolk bestaan moontlik op 'n afstand ongeveer duisend maal verder as die gekarteerde streke.
+
+Die vloei van plasma vanaf die Son (deur die sonwind) deurdring die Sonnestelsel. Dit skep 'n stellêre windbel in die interstellêre medium, genaamd die helio- of sonsfeer, wat tot in die middel van die verstrooide skyf strek.
+
+Die planete in die Sonnestelsel (in volgorde van hulle afstand van die Son) is:
+
+ Mercurius
+ Venus
+ Aarde
+ Mars
+ Jupiter
+ Saturnus
+ Uranus
+ Neptunus
+
+Met die ingang van 2009 is vyf kleiner voorwerpe as dwergplanete geklassifiseer. Ceres is in die asteroïdegordel en vier ander wentel om die Son agter Neptunus: Pluto (voorheen as die negende planeet geklassifiseer), Haumea, Makemake en Eris.
+
+Ses van die planete en drie van die dwergplanete word deur natuurlike satelliete omwentel. Daar word gewoonlik na hierdie satelliete as "mane" verwys, soos die Aarde se eie maan. Al die buitenste planete word deur planetêre ringe van stof en ander partikels omring. Sedert 2016 is daar aanwysings dat daar moontlik nog 'n Planeet Nege bestaan in 'n baie groot wentelbaan.
+
+Este artículo trata sobre el sistema en el que están el Sol y la Tierra. Para otros sistemas, véanse sistema planetario y sistema estelar.
+Sistema solar
+
+El Sol y los planetas del sistema solar. Los tamaños están a escala, pero no así las distancias.
+Datos generales
+Edad 4568 millones de años
+Localización Nube Interestelar Local, Burbuja Local, Brazo de Orión, Vía Láctea
+Estrella más cercana Próxima Centauri
+(4,22 al)
+Sistema planetario conocido más cercano Alfa Centauri
+(4,37 al)
+Sistema Planetario
+Semieje mayor al planeta exterior (Neptuno) 4500 millones de kilómetros (30,10 UA)
+Distancia al acantilado de Kuiper 50 UA
+N.º de estrellas conocidas 1 (Sol)
+N.º de planetas conocidos 8
+N.º conocido de planetas enanos 5 (docenas pendientes de aceptación)
+N.º conocido de satélites naturales 400 (176 de los planetas)
+N.º conocido de planetas menores 587 479
+N.º conocido de cometas 3153
+N.º de satélites asteroidales 19
+Órbita alrededor del centro galáctico
+Inclinación del plano invariable respecto al plano galáctico 60°
+Distancia al centro galáctico 27 000±1 000 al
+Velocidad orbital 220 km/s
+Periodo orbital 225-250 Ma
+Propiedades de la estrella relacionada
+Tipo espectral G2V
+Línea de congelamiento 2,7 UA
+Distancia a la heliopausa ~120 UA
+Esfera de Hill ~1-2 al
+
+El sistema solar1 es el sistema planetario que liga gravitacionalmente a un conjunto de objetos astronómicos que giran directa o indirectamente en una órbita alrededor de una única estrella conocida con el nombre de Sol.2
+
+La estrella concentra el 99,86 % de la masa del sistema solar,345 y la mayor parte de la masa restante se concentra en ocho planetas cuyas órbitas son prácticamente circulares y transitan dentro de un disco casi llano llamado plano eclíptico.6 Los cuatro planetas más cercanos, considerablemente más pequeños, Mercurio, Venus, Tierra y Marte, también conocidos como los planetas terrestres, están compuestos principalmente por roca y metal.78 Mientras que los cuatro más alejados, denominados gigantes gaseosos o «planetas jovianos», más masivos que los terrestres, están compuestos de hielo y gases. Los dos más grandes, Júpiter y Saturno, están compuestos principalmente de helio e hidrógeno. Urano y Neptuno, denominados gigantes helados, están formados mayoritariamente por agua congelada, amoniaco y metano.9
+El Sol y los planetas del sistema solar. Los tamaños están a escala, pero no así las distancias.
+
+El Sol es el único cuerpo celeste del sistema solar que emite luz propia,10 debido a la fusión termonuclear del hidrógeno y su transformación en helio en su núcleo.11 El sistema solar se formó hace unos 4600 millones de años121314 a partir del colapso de una nube molecular. El material residual originó un disco circunestelar protoplanetario en el que ocurrieron los procesos físicos que llevaron a la formación de los planetas.10 El sistema solar se ubica en la actualidad en la nube Interestelar Local que se halla en la Burbuja Local del brazo de Orión, de la galaxia espiral Vía Láctea, a unos 28 000 años luz del centro de esta.15
+Concepción artística de un disco protoplanetario
+
+El sistema solar es también el hogar de varias regiones compuestas por objetos pequeños. El cinturón de asteroides, ubicado entre Marte y Júpiter, es similar a los planetas terrestres ya que está constituido principalmente por roca y metal. En este cinturón se encuentra el planeta enano Ceres. Más allá de la órbita de Neptuno están el cinturón de Kuiper, el disco disperso y la nube de Oort, que incluyen objetos transneptunianos formados por agua, amoníaco y metano principalmente. En este lugar existen cuatro planetas enanos: Haumea, Makemake, Eris y Plutón, el cual fue considerado el noveno planeta del sistema solar hasta 2006. Este tipo de cuerpos celestes ubicados más allá de la órbita de Neptuno son también llamados plutoides, los cuales junto a Ceres, poseen el suficiente tamaño para que se hayan redondeado por efectos de su gravedad, pero que se diferencian principalmente de los planetas porque no han vaciado su órbita de cuerpos vecinos.16
+
+Adicionalmente a los miles de objetos pequeños de estas dos zonas, algunas docenas de los cuales son candidatos a planetas enanos, existen otros grupos como cometas, centauros y polvo cósmico que viajan libremente entre regiones. Seis planetas y cuatro planetas enanos poseen satélites naturales. El viento solar, un flujo de plasma del Sol, crea una burbuja de viento estelar en el medio interestelar conocido como heliosfera, la que se extiende hasta el borde del disco disperso. La nube de Oort, la cual se cree que es la fuente de los cometas de período largo, es el límite del sistema solar y su borde está ubicado a un año luz desde el Sol.17
+
+A principios del año 2016, se publicó un estudio según el cual puede existir un noveno planeta en el sistema solar, al que dieron el nombre provisional de Phattie.18 Se estima que el tamaño de Phattie sería entre el de Neptuno y la Tierra y que el hipotético planeta sería de composición gaseosa.
+Descubrimientos y exploración
+Véanse también: Anexo:Cronología del descubrimiento de los planetas del sistema solar y sus satélites naturales y Exploración del sistema solar.
+Nicolás Copérnico
+
+Algunas de las más antiguas civilizaciones concibieron al universo desde una perspectiva geocéntrica, como en Babilonia en donde su visión del mundo estuvo representada de esta forma.19 En Occidente, el griego presocrático Anaximandro declaró a la Tierra como centro del universo, imaginó a esta como un pilar en forma de tambor equilibrado en sus cuatro puntos más distantes lo que, en su opinión, le permitió tener estabilidad.20 Pitágoras y sus seguidores hablaron por primera vez del planeta como una esfera, basándose en la observación de los eclipses;21 y en el siglo IV a. C. Platón junto a su estudiante Aristóteles escribieron textos del modelo geocéntrico de Anaximandro, fusionándolo con el esférico pitagórico. Pero fue el trabajo del astrónomo heleno Claudio Ptolomeo, especialmente su publicación llamada Almagesto expuesta en el siglo II de nuestra era, el cual sirvió durante un período de casi 1300 años como la norma en la cual se basaron tanto astrónomos europeos como islámicos.
+
+Si bien el griego Aristarco presentó en el siglo siglo III a. C. a la teoría heliocéntrica y más adelante el matemático hindú Aryabhata hizo lo mismo, ningún astrónomo desafió realmente el modelo geocéntrico hasta la llegada del polaco Nicolás Copérnico el cual causó una verdadera revolución en esta rama a nivel mundial,22 por lo cual es considerado el padre de la astronomía moderna.23 Esto debido a que, a diferencia de sus antecesores, su obra consiguió una amplia difusión pese a que fue concebida para circular en privado; el papa Clemente VII pidió información de este texto en 1533 y Lutero en 1539 lo calificó de «astrólogo advenedizo que pretende probar que la Tierra es la que gira».24 La obra de Copérnico otorga dos movimientos a la Tierra, uno de rotación en su propio eje cada 24 horas y uno de traslación alrededor del Sol cada año, con la particularidad de que este era circular y no elíptico como lo describimos hoy.
+
+En el siglo XVII, el trabajo de Copérnico fue impulsado por científicos como Galileo Galilei, quien ayudado con un nuevo invento, el telescopio, descubre que alrededor de Júpiter rotan satélites naturales que afectaron en gran forma la concepción de la teoría geocéntrica ya que estos cuerpos celestes no orbitaban a la Tierra;2526 lo que ocasionó un gran conflicto entre la Iglesia y los científicos que impulsaban esta teoría, el cual culminó con el apresamiento y sentencia del tribunal de la inquisición a Galileo por herejía al estar su idea contrapuesta con el modelo clásico religioso.27 Su contemporáneo Johannes Kepler, a partir del estudio de la órbita circular intentó explicar la traslación planetaria sin conseguir ningún resultado,28 por lo que reformuló sus teorías y publicó, en el año 1609, las hoy conocidas leyes de Kepler en su obra Astronomia nova, en la que establece una órbita elíptica la cual se confirmó cuando predijo satisfactoriamente el tránsito de Venus del año 1631.29 Junto a ellos, el científico británico Isaac Newton formuló y dio una explicación al movimiento planetario mediante sus leyes y el desarrollo del concepto de la gravedad.30 Sin embargo, el heliocentrismo no sería apoyado experimentalmente sino hasta décadas después con el descubrimiento de la aberración de la luz por el astrónomo inglés James Bradley en 1725,31 y la medición del paralaje estelar efectuada por el matemático alemán Friedrich Bessel en 1838.32
+
+En 1655, el científico neerlandés Christiaan Huygens descubrió el satélite Titán y la verdadera naturaleza de los anillos de Saturno, y describió por primera vez las dimensiones reales del entonces conocido sistema solar (6 planetas y 6 lunas).33 En 1704 se acuñó el término "sistema solar".34 El científico británico Edmund Halley dedicó sus estudios principalmente al análisis de las órbitas de los cometas.3536 El mejoramiento del telescopio durante este tiempo permitió a los científicos de todo el mundo descubrir nuevas características de los cuerpos celestes que existen.37
+
+A mediados del siglo XX, el 12 de abril de 1961, el cosmonauta Yuri Gagarin se convirtió en el primer hombre en el espacio;38 la misión estadounidense Apolo 11, al mando de Neil Armstrong llega a la Luna el 16 de julio de 1969. En la actualidad, el sistema solar se estudia con la ayuda de telescopios terrestres, observatorios espaciales y misiones espaciales.
+Características generales
+El Sol.
+
+Los planetas y los asteroides orbitan alrededor del Sol, aproximadamente en un mismo plano y siguiendo órbitas elípticas (en sentido antihorario, si se observasen desde el Polo Norte del Sol); aunque hay excepciones, como el cometa Halley, que gira en sentido horario.39 El plano en el que gira la Tierra alrededor del Sol se denomina plano de la eclíptica, y los demás planetas orbitan aproximadamente en el mismo plano. Aunque algunos objetos orbitan con un gran grado de inclinación respecto de este, como Plutón que posee una inclinación con respecto al eje de la eclíptica de 17.º, así como una parte importante de los objetos del cinturón de Kuiper.4041
+
+Formación y evolución
+Artículo principal: Formación y evolución del sistema solar
+
+El sistema solar se formó hace 4568 millones de años por el colapso gravitatorio de una parte de una nube molecular gigante. Esta nube primigenia tenía varios años luz de diámetro y probablemente dio a luz a varias estrellas.44 Como es normal en las nubes moleculares, consistía principalmente de hidrógeno, algo de helio y pequeñas cantidades de elementos pesados surgidos de previas generaciones estelares. A medida que la región —conocida como nebulosa protosolar—45 se convertía en el sistema solar, colapsaba y la conservación del momento angular hizo que rotase más deprisa. El centro, donde se acumuló la mayor parte de la masa, se volvió cada vez más caliente que el disco circundante.44 A medida que la nebulosa en contracción rotaba más deprisa, comenzó a aplanarse en un disco protoplanetario con un diámetro de alrededor de 200 UA44 y una densa y caliente protoestrella en el centro.4647 Los planetas se formaron por acreción a partir de este disco48 en el que el gas y el polvo atraídos gravitatoriamente entre sí se unen para formar cuerpos cada vez más grandes. En este escenario, cientos de protoplanetas podrían haber surgido en el temprano sistema solar que acabaron fusionándose o fueron destruidos dejando los planetas, los planetas enanos y el resto de cuerpos menores.
+
+Gracias a sus puntos de ebullición más altos, solo los metales y silicatos podían existir en forma sólida cerca del Sol, en el cálido sistema solar interior; estos fueron finalmente los componentes de Mercurio, Venus, la Tierra y Marte: los planetas rocosos. Debido a que los metales solo eran una pequeña parte de la nebulosa solar, los planetas terrestres no se podían hacer muy grandes. Los planetas gigantes (Júpiter, Saturno, Urano y Neptuno) se formaron más lejos, más allá de la línea de congelación: el límite entre las órbitas de Marte y Júpiter donde las temperaturas son lo suficientemente bajas como para que los compuestos volátiles permanezcan sólidos. Los hielos que forman estos planetas eran más abundantes que los metales y silicatos que formaron los planetas terrestres interiores, por lo que los permitió crecer hasta ser lo suficientemente masivos como para capturar grandes atmósferas de hidrógeno y helio: los elementos más ligeros y abundantes. Los residuos restantes que no llegaron a convertirse en planetas se agruparon en regiones como el cinturón de asteroides, el cinturón de Kuiper y la nube de Oort. El modelo de Niza explica la aparición de estas regiones y propone que los planetas exteriores se podrían haber formado en sitios diferentes de los actuales a los que habrían llegado tras múltiples interacciones gravitatorias.
+
+Tras cincuenta millones de años, la densidad del hidrógeno y la presión en el centro de la protoestrella se hicieron tan grandes que comenzó la fusión termonuclear.49 La temperatura, la velocidad de reacción, la presión y la densidad aumentaron hasta alcanzar el equilibrio hidrostático: la presión térmica igualó a la fuerza de la gravedad. En ese momento, el Sol entró en la secuencia principal.50 El tiempo que estará en la secuencia principal será de unos diez mil millones de años; en comparación, todas las fases previas al encendido termonuclear duraron unos dos mil millones de años.51 El viento solar formó la heliosfera que barrió los restos de gas y polvo del disco protoplanetario (y los expulsó al espacio interestelar), con lo que terminó el proceso de formación planetaria. Desde entonces, el Sol se ha ido haciendo cada vez más brillante; en la actualidad es un 70% más brillante que a su entrada en la secuencia principal.52
+
+El sistema solar continuará más o menos como lo conocemos hasta que todo el hidrógeno del núcleo del Sol se haya convertido en helio, situación que tendrá lugar dentro de cinco mil millones de años. Esto marcará el final de la estancia del Sol en la secuencia principal. En ese momento el núcleo colapsará y la producción de energía será mucho mayor que en el presente. Las capas exteriores se expandirán unas doscientas sesenta veces su diámetro actual, por lo que se convertirá en una gigante roja. El gran aumento de su superficie hará que esté muchísimo más frío (del orden de 2600 K).51 Se espera que el Sol en expansión vaporice Mercurio y Venus y vuelva la Tierra inhabitable al mover la zona de habitabilidad más allá de la órbita de Marte. Por último, el núcleo estará lo bastante caliente para fusionar el helio; el Sol quemará helio durante una fracción del tiempo que estuvo quemando hidrógeno. El Sol no tiene la suficiente masa para comenzar la fusión de elementos pesados, por lo que las reacciones nucleares en el núcleo disminuirán. Las capas exteriores se perderán en el espacio en forma de nebulosa planetaria, devolviendo parte del material con el que se formó el Sol —enriquecido con elementos pesados como el carbono— al medio interestelar y dejando atrás una enana blanca con la mitad de la masa original del Sol y el tamaño de la Tierra (un objeto extraordinariamente denso).53
+
+Het zonnestelsel is het planetenstelsel dat bestaat uit de Zon en de hemellichamen die door de zwaartekracht aan de Zon gebonden zijn. De Zon is een klasse G2 hoofdreeksster met een diameter van 1,39 miljoen kilometer. De Zon neemt 99,86% van de massa in het zonnestelsel voor haar rekening.
+
+Naast de Zon bevat het zonnestelsel acht planeten, vijf dwergplaneten, meer dan 1,2 miljoen bekende planetoïden, 715 manen van planeten en 3849 bekende kometen (stand: januari 2023). De meeste van deze objecten bewegen zich rond de Zon in omloopbanen met een kleine glooiingshoek ten opzichte van de ecliptica. In de ruimte tussen deze hemellichamen bevindt zich de interplanetaire materie. Volgens een definitie wordt het zonnestelsel begrensd door de heliopauze, de rand van de heliosfeer.
+Ontstaan
+Zie Ontstaan en evolutie van het zonnestelsel voor het hoofdartikel over dit onderwerp.
+
+Het zonnestelsel ontstond ongeveer 4,5 miljard jaar geleden, toen een interstellaire gaswolk door onbekende oorzaak actief werd en door zijn eigen gewicht begon te krimpen en steeds sneller rond te draaien, waarna in het midden van deze gaswolk de Zon ontstond.
+
+Het ineenstorten van het midden van de gaswolk, ook zonnenevel genoemd, nam 100.000 jaar in beslag. Door de enorme hitte die ontstond bij het samentrekken ontstond een kleine ster die een groot deel van de gaswolk opzoog en zo een volwaardige ster werd: onze Zon. Het overgebleven gas, ook accretieschijf genoemd, begon daarna af te koelen en er stolden stukken ijs, steen en metaal, die door botsingen steeds groter werden omdat ze aan elkaar vastklitten. Die grote brokken verzamelden al het nog overgebleven materiaal, op enkele planetoïden en meteoroïden na. Toen waren sommige brokken (protoplaneten) groot genoeg geworden om ook het laatste beetje gas op te zuigen.
+
+Op dat moment, een miljoen jaar na het ontstaan van de eerste brokken, begon de Zon plots sterke straling, een zonnewind, te produceren, die de gasmantel rond bijna alle protoplaneten, behalve de gasreuzen, wegblies. Daarna kregen de protoplaneten langzaam een stabiele baan rond de Zon, en de planeten en manen werden gevormd door laatste grote botsingen tussen protoplaneten.
+
+Ongeveer 4 miljard jaar geleden kreeg het zonnestelsel nog te maken met een kosmisch bombardement, waardoor op veel manen en planeten grote inslagkraters ontstonden.
+Beweging
+De spiraalarmen van de Melkweg met de omloopbaan van de Zon (geel). De Orionarm is aangegeven als Local Spur.
+Het zonnestelsel (op schaal)
+
+De Zon bevindt zich in de Lokale bel in de Orionarm, een spiraalarm van de Melkweg, op een afstand van 26.673±42 lichtjaar van het galactisch centrum. Het zonnestelsel beweegt met een snelheid van ongeveer 220 km/s in 225-250 miljoen jaar in een vaste baan om het centrum van de Melkweg. Een theorie onder wetenschappers is dat de route die de Zon door spiraalarmen in de Melkweg volgt bijdraagt aan de periodieke massale uitsterving van leven op aarde.
+Zon en (dwerg)planeten
+
+Traditioneel (tot 2006) werden tot het zonnestelsel negen planeten gerekend. De planeten Mercurius, Venus, Mars, Jupiter, en Saturnus zijn bekend sinds de oudheid. Na de uitvinding van de telescoop werden Uranus (1781), Neptunus (1846), en Pluto (1930) ontdekt. In de jaren 90 van de 20e eeuw werd ontdekt dat de toenmalige negende planeet, Pluto, slechts een van vele soortgelijke objecten in de Kuipergordel was. De vraag drong zich op of deze met Pluto vergelijkbare objecten nu ook allemaal als 'planeet' geclassificeerd moesten worden. Naarmate steeds grotere objecten ontdekt werden, zoals Quaoar en Varuna kwam het klassieke aantal van negen planeten onder druk te staan. Met de ontdekking van de nog veel grotere Eris was een nieuwe definitie van planeet noodzakelijk. Volgens de nieuwe definitie wordt Pluto nu een 'dwergplaneet' genoemd en telt het zonnestelsel acht 'echte' planeten.
+Een nieuwe planeet?
+
+In januari 2016 werd in de media gebracht dat er sterke aanwijzingen zijn voor een negende planeet met afmetingen vergelijkbaar met Neptunus maar ver voorbij de baan van Pluto. Deze nog hypothetische planeet is voorlopig aangeduid met de naam Planeet Negen (Engels: Planet Nine)[6] Een hypothetische planeet met een formaat van ongeveer twintig aardmassa's zou de verklaring kunnen zijn voor het opmerkelijke gedrag dat een aantal Transneptunische objecten in het buitengebied van de Kuipergordel vertoont. Konstantin Batygin en Michael Brown, wetenschappers aan de Caltech Universiteit, kondigden op 20 januari 2016 hun ontdekking aan, die gebaseerd is op dynamische modellen, en nog niet op visuele waarnemingen die als definitief bewijs zouden gelden.[7]
+
+Solsystemet består af Solen og de himmellegemer, som den binder til sig gennem sin gravitation. Solsystemet har sin oprindelse i et gravitationelt kollaps af en gigantisk gas- og støvsky for 4,6 milliarder år siden.[1] Det blev dannet af en stor og meget kold gassky, der bestod af hydrogen og helium samt ganske små mængder af andre grundstoffer.
+
+Rundt om Solen kredser en række objekter i en næsten flad, elliptisk skive. Med undtagelse af Solen finder man det meste af Solsystemets masse i de otte planeter med omløbsbaner, der næsten er cirkulære. De fire indre planeter er Merkur, Venus, Jorden og Mars, som kaldes klippeplaneter og de består hovedsageligt af sten og metal. De fire ydre planeter er Jupiter, Saturn, Uranus og Neptun, som kaldes gaskæmper og de består hovedsageligt af brint og helium. Disse planeter er meget tungere og større end klippeplaneterne.
+
+Der findes to områder med småplaneter. Asteroidebæltet, som ligger mellem Mars og Jupiter, består af mindre stykker, som har visse ligheder med klippeplaneterne, da størstedelen består af sten og metal. Kuiperbæltet, som ligger udenfor Neptuns omløbsbane, består hovedsageligt af frossen vand, ammoniak og metan. I disse bælter findes der fem specielle objekter: Ceres, Pluto, Haumea, Makemake og Eris, som kaldes dværgplaneter, da de anses at være tilstrækkeligt store til at være blevet runde som en konsekvens af egen gravitation. På en afstand af 0,8-1,6 lysår fra Solen antager man, at der findes hvad man kalder Oortskyen, som formodes at være kilden til de langperiodiske kometer.
+
+I Solsystemet findes der grupper af mindre stykker såsom kometer, kentaur-asteroider, interstellart medium som findes i dette område mens solvinden, plasma fra Solen, skaber en gasboble i det interstellare medium som også kaldes heliosfæren. Dette strækker sig ud til midten af det område, som kaldes spredningsskiven, et område i udkanten af Kuiperbæltet.
+
+Seks af planeterne og fire af dværgplaneterne har naturlige satellitter eller måner i omløbsbaner rundt om sig. Alle de fire ydre planeter har en planetring bestående af is og grus rundt om sig. En enkelt af dværgplaneterne, Haumea, har ligeledes en planetring. De nærmeste stjerner er inden for den såkaldte Local Bubble, med den nærmeste Proxima Centauri på 4,25 lysår.
+Solsystemets opdagelse og udforskning
+
+I en stor del af menneskehedens tidlige historie kendte kun et fåtal til Solsystemets eksistens, som vi kender det i dag. Den almindelige opfattelse var, at Jorden lå stationært i universets midte og var noget helt andet end de formodede guddommelige eller åndelige objekter, der bevægede sig på himlen. For eksempel spekulerede den indiske astronom, Aryabhata, og den græske filosof, Aristarchos, i det heliocentriske verdensbillede, hvilket vil sige, at de mente at Solen var i centrum, og Jorden bevægede sig rundt om solen. Men det var astronomen Nicolaus Kopernikus i 1500-tallet, der som den første kunne udvikle en matematisk model, som forudsagde de forskellige himmellegemers bevægelser i Solsystemet. I 1600-tallet kunne de berømte astronomer Galileo Galilei, Johannes Kepler og Isaac Newton bygge videre på Copernicus' model, hvilket efterhånden førte til almen accept af, at Jorden bevæger sig rundt om Solen, og at de andre planeter styres af de samme fysiske love, som også gælder for Jorden.
+
+Forbedringer af de første primitive teleskoper medførte en acceleration af opdagelser af såvel større som mindre himmellegemer i Solsystemet, deriblandt planeterne Uranus og Neptun samt utallige asteroider. I nyere tid har bedre udstyr givet mulighed for mere detaljerede studier af Solsystemets himmellegemer, herunder deres overfladestrukturer, såsom bjerge, dale og nedslagskratere samt vejrfænomener som støvskyer, is-formationer og sandstorme.
+
+量子��學的預測已被實驗核對至極高準確度,是在科學領域中,最為準確的理論之一。[8]對應原理實現經典力學與量子力學之間的對應關係,根據對應原理,假若量子系统已達到某「經典極限」,則其物理行為可以很精确地用經典理论來描述;這經典極限可以是大量子數極限,也可以是普朗克常數趨零極限。實際而言,许多宏观系统都是用經典理论(如經典力学和电磁学)来做精确描述。因此在非常“大”的系统中,量子力学的特性應該会逐漸與經典物理的特性相近似,两者必須相互符合。[26]:190-191
+
+对应原理對於建立一个有效的量子力学模型是很重要的辅助工具。量子力学的数学基础相當廣泛寬鬆,它僅只要求量子系統的態向量屬於希尔伯特空间,其可观察量是线性的厄米算符,它并没有规定在实际情况下,应该选择哪一种希尔伯特空间、哪些厄米算符。因此,在实际情况下,必须选择相应的希尔伯特空间和算符来描写一个特定的量子系统。而对应原理则是做出这个选择的一个重要辅助工具。这个原理要求量子力学所做出的预言,在越来越大的系统中,逐渐近似經典理论的预言。这个大系统的极限,被称为“經典极限”或者“对应极限”。因此可以使用启发法的手段,来建立一个量子力学的模型,而这个模型的极限,就是相应的經典物理学的模型。[26]:190-191[27]:3ff
+
+在經典系統與量子系統之間,量子相干是一種很明顯可以用來區分的性質,具有量子相干性的電子、光子等等微觀粒子可以處於量子疊加態,不具有量子相干性的棒球、老虎等等宏觀系統不可以處於量子疊加態。量子退相干可以用來解釋這些行為。一種應用這性質來區分的工具是貝爾不等式,遭到量子糾纏的系統不遵守貝爾不等式,而量子退相干能夠將量子糾纏性質變換為經典統計性質,系統的物理行為因此可以用隱變數理論解釋,不再不遵守貝爾不等式。[28]:80-82簡略而言,量子干涉是將幾個量子態的量子幅總和在一起,而經典干涉則是將幾個經典波動的波強總和在一起。對於微觀物體,整個系統的延伸尺寸超小於相干長度,因此會產生長程量子糾纏與其它非定域現象,一些量子系統的特徵行為。通常,量子相干不會出現於宏觀系統。[29]
+
+
+# Roleplay
+
"In another timeline, in another world Chaldea stood alone as a bastion for humanity, a last hope for the world after it was incinerated, and even furthermore after mankind was erased. A valiant master stood nearly alone against incomprehensible forces, with only a few chosen servants at his side. There is a story that tells of its fate, unwinding as we speak. It is a tale of virtue and sacrifice, of darkness and overcoming despair.
This Chaldea, this story hews closely to that tale, yet, retains its own nature. This is not the story of a grand order, this is the story of a grand city. This is the story of a city that has withstood time immemorial. Mages might have been getting rarer over the years, but magecraft and magic still ran strong within the city. It was a bastion for their kind, and while non-mages were allowed to live in the city as staff and assistants to the mages, it was clear that mages were considered a slight step above at least. Of course, there was a reason for this.
Singularities.
@@ -6224,4046 +12477,9215 @@ Saber wasn't ready to be summoned into the bedroom of a teenaged boy. She wasn't
Saber squared her jaw and stepped from the summoning circle. She looked her new Master straight in the eyes. He couldn't have been more than 19. Her gaze remained stern as she pulled her sword and sheath from her hip and planted the tip into the floorboards in front of her. Then she knelt. Her hands clutched the handle and she knelt down on one knee before her new Master.
"Greetings Master. The ritual is complete. I, Saber, have been summoned. I am an extension of your will and a slave to your bidding. Whatever you command of me shall be done. I am solely yours until you dismiss me or perish. What is your bidding?","Shinji Matou had a large grin on his face as he laughed slightly; he had done it, he had summoned the most powerful class of Servant and now his victory in the Grail War was basically assured. As he watched his Servant swear her allegiance to him, he walked around her, inspecting her as he licked his lips. She seemed like a battle-hardened warrior but she was still a cute woman...one with a very tempting body indeed. Already, lewd thoughts were forming in his head about the many things he would do with her and her body while she was his.
"I am glad to see you understand your place, Saber. I am your Master, Shinji Matou. I want you to tell me your true name and strip. I want to inspect your body to insure that there was nothing faulty during the summoning." Shinji spoke with a smirk as his eyes sparkled with a clearly lustful intent; there was a bulge beginning to grow in his pants already and the size and thickness was impressive from even a distance from what Saber could see.
+# Technical Writing
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+A Turing machine is a mathematical model of computation describing an abstract machine[1] that manipulates symbols on a strip of tape according to a table of rules.[2] Despite the model's simplicity, it is capable of implementing any computer algorithm.[3]
+
+The machine operates on an infinite[4] memory tape divided into discrete cells,[5] each of which can hold a single symbol drawn from a finite set of symbols called the alphabet of the machine. It has a "head" that, at any point in the machine's operation, is positioned over one of these cells, and a "state" selected from a finite set of states. At each step of its operation, the head reads the symbol in its cell. Then, based on the symbol and the machine's own present state, the machine writes a symbol into the same cell, and moves the head one step to the left or the right,[6] or halts the computation. The choice of which replacement symbol to write, which direction to move the head, and whether to halt is based on a finite table that specifies what to do for each combination of the current state and the symbol that is read. Like a real computer program, it is possible for a Turing machine to go into an infinite loop which will never halt.
+
+The Turing machine was invented in 1936 by Alan Turing,[7][8] who called it an "a-machine" (automatic machine).[9] It was Turing's doctoral advisor, Alonzo Church, who later coined the term "Turing machine" in a review.[10] With this model, Turing was able to answer two questions in the negative:
+
+ Does a machine exist that can determine whether any arbitrary machine on its tape is "circular" (e.g., freezes, or fails to continue its computational task)?
+ Does a machine exist that can determine whether any arbitrary machine on its tape ever prints a given symbol?[11][12]
+
+Thus by providing a mathematical description of a very simple device capable of arbitrary computations, he was able to prove properties of computation in general—and in particular, the uncomputability of the Entscheidungsproblem ('decision problem').[13]
+
+Turing machines proved the existence of fundamental limitations on the power of mechanical computation.[14] While they can express arbitrary computations, their minimalist design makes them too slow for computation in practice: real-world computers are based on different designs that, unlike Turing machines, use random-access memory.
+
+Turing completeness is the ability for a computational model or a system of instructions to simulate a Turing machine. A programming language that is Turing complete is theoretically capable of expressing all tasks accomplishable by computers; nearly all programming languages are Turing complete if the limitations of finite memory are ignored.
+Overview
+
+A Turing machine is an idealised model of a central processing unit (CPU) that controls all data manipulation done by a computer, with the canonical machine using sequential memory to store data. Typically, the sequential memory is represented as a tape of infinite length on which the machine can perform read and write operations.
+
+In the context of formal language theory, a Turing machine (automaton) is capable of enumerating some arbitrary subset of valid strings of an alphabet. A set of strings which can be enumerated in this manner is called a recursively enumerable language. The Turing machine can equivalently be defined as a model that recognises valid input strings, rather than enumerating output strings.
+
+Given a Turing machine M and an arbitrary string s, it is generally not possible to decide whether M will eventually produce s. This is due to the fact that the halting problem is unsolvable, which has major implications for the theoretical limits of computing.
+
+The Turing machine is capable of processing an unrestricted grammar, which further implies that it is capable of robustly evaluating first-order logic in an infinite number of ways. This is famously demonstrated through lambda calculus.
+
+A Turing machine that is able to simulate any other Turing machine is called a universal Turing machine (UTM, or simply a universal machine). Another mathematical formalism, lambda calculus, with a similar "universal" nature was introduced by Alonzo Church. Church's work intertwined with Turing's to form the basis for the Church–Turing thesis. This thesis states that Turing machines, lambda calculus, and other similar formalisms of computation do indeed capture the informal notion of effective methods in logic and mathematics and thus provide a model through which one can reason about an algorithm or "mechanical procedure" in a mathematically precise way without being tied to any particular formalism. Studying the abstract properties of Turing machines has yielded many insights into computer science, computability theory, and complexity theory.
+Physical description
+
+In his 1948 essay, "Intelligent Machinery", Turing wrote that his machine consisted of:
+
+ ...an unlimited memory capacity obtained in the form of an infinite tape marked out into squares, on each of which a symbol could be printed. At any moment there is one symbol in the machine; it is called the scanned symbol. The machine can alter the scanned symbol, and its behavior is in part determined by that symbol, but the symbols on the tape elsewhere do not affect the behavior of the machine. However, the tape can be moved back and forth through the machine, this being one of the elementary operations of the machine. Any symbol on the tape may therefore eventually have an innings.[15]
+ — Turing 1948, p. 3[16]
+
+Description
+For visualizations of Turing machines, see Turing machine gallery.
+
+The Turing machine mathematically models a machine that mechanically operates on a tape. On this tape are symbols, which the machine can read and write, one at a time, using a tape head. Operation is fully determined by a finite set of elementary instructions such as "in state 42, if the symbol seen is 0, write a 1; if the symbol seen is 1, change into state 17; in state 17, if the symbol seen is 0, write a 1 and change to state 6;" etc. In the original article ("On Computable Numbers, with an Application to the Entscheidungsproblem", see also references below), Turing imagines not a mechanism, but a person whom he calls the "computer", who executes these deterministic mechanical rules slavishly (or as Turing puts it, "in a desultory manner").
+The head is always over a particular square of the tape; only a finite stretch of squares is shown. The instruction to be performed (q4) is shown over the scanned square. (Drawing after Kleene (1952) p. 375.)
+Here, the internal state (q1) is shown inside the head, and the illustration describes the tape as being infinite and pre-filled with "0", the symbol serving as blank. The system's full state (its "complete configuration") consists of the internal state, any non-blank symbols on the tape (in this illustration "11B"), and the position of the head relative to those symbols including blanks, i.e. "011B". (Drawing after Minsky (1967) p. 121.)
+
+More explicitly, a Turing machine consists of:
+
+ A tape divided into cells, one next to the other. Each cell contains a symbol from some finite alphabet. The alphabet contains a special blank symbol (here written as '0') and one or more other symbols. The tape is assumed to be arbitrarily extendable to the left and to the right, so that the Turing machine is always supplied with as much tape as it needs for its computation. Cells that have not been written before are assumed to be filled with the blank symbol. In some models the tape has a left end marked with a special symbol; the tape extends or is indefinitely extensible to the right.
+ A head that can read and write symbols on the tape and move the tape left and right one (and only one) cell at a time. In some models the head moves and the tape is stationary.
+ A state register that stores the state of the Turing machine, one of finitely many. Among these is the special start state with which the state register is initialised. These states, writes Turing, replace the "state of mind" a person performing computations would ordinarily be in.
+ A finite table[17] of instructions[18] that, given the state(qi) the machine is currently in and the symbol(aj) it is reading on the tape (symbol currently under the head), tells the machine to do the following in sequence (for the 5-tuple models):
+
+ Either erase or write a symbol (replacing aj with aj1).
+ Move the head (which is described by dk and can have values: 'L' for one step left or 'R' for one step right or 'N' for staying in the same place).
+ Assume the same or a new state as prescribed (go to state qi1).
+
+In the 4-tuple models, erasing or writing a symbol (aj1) and moving the head left or right (dk) are specified as separate instructions. The table tells the machine to (ia) erase or write a symbol or (ib) move the head left or right, and then (ii) assume the same or a new state as prescribed, but not both actions (ia) and (ib) in the same instruction. In some models, if there is no entry in the table for the current combination of symbol and state, then the machine will halt; other models require all entries to be filled.
+
+Every part of the machine (i.e. its state, symbol-collections, and used tape at any given time) and its actions (such as printing, erasing and tape motion) is finite, discrete and distinguishable; it is the unlimited amount of tape and runtime that gives it an unbounded amount of storage space.
+Formal definition
+
+Following Hopcroft & Ullman (1979, p. 148), a (one-tape) Turing machine can be formally defined as a 7-tuple M = ⟨ Q , Γ , b , Σ , δ , q 0 , F ⟩ M=\langle Q,\Gamma ,b,\Sigma ,\delta ,q_{0},F\rangle where
+
+ Γ \Gamma is a finite, non-empty set of tape alphabet symbols;
+ b ∈ Γ b\in \Gamma is the blank symbol (the only symbol allowed to occur on the tape infinitely often at any step during the computation);
+ Σ ⊆ Γ ∖ { b } \Sigma \subseteq \Gamma \setminus \{b\} is the set of input symbols, that is, the set of symbols allowed to appear in the initial tape contents;
+ Q Q is a finite, non-empty set of states;
+ q 0 ∈ Q q_{0}\in Q is the initial state;
+ F ⊆ Q F\subseteq Q is the set of final states or accepting states. The initial tape contents is said to be accepted by M M if it eventually halts in a state from F F.
+ δ : ( Q ∖ F ) × Γ ↛ Q × Γ × { L , R } {\displaystyle \delta :(Q\setminus F)\times \Gamma \not \to Q\times \Gamma \times \{L,R\}} is a partial function called the transition function, where L is left shift, R is right shift. If δ \delta is not defined on the current state and the current tape symbol, then the machine halts;[19] intuitively, the transition function specifies the next state transited from the current state, which symbol to overwrite the current symbol pointed by the head, and the next head movement.
+
+3-state Busy Beaver. Black icons represent location and state of head; square colors represent 1s (orange) and 0s (white); time progresses vertically from the top until the HALT state at the bottom.
+
+A relatively uncommon variant allows "no shift", say N, as a third element of the set of directions { L , R } \{L,R\}.
+
+The 7-tuple for the 3-state busy beaver looks like this (see more about this busy beaver at Turing machine examples):
+
+ Q = { A , B , C , HALT } Q=\{{\mbox{A}},{\mbox{B}},{\mbox{C}},{\mbox{HALT}}\} (states);
+ Γ = { 0 , 1 } \Gamma =\{0,1\} (tape alphabet symbols);
+ b = 0 b=0 (blank symbol);
+ Σ = { 1 } \Sigma =\{1\} (input symbols);
+ q 0 = A q_{0}={\mbox{A}} (initial state);
+ F = { HALT } F=\{{\mbox{HALT}}\} (final states);
+ δ = \delta = see state-table below (transition function).
+
+Initially all tape cells are marked with 0 {\displaystyle 0}.
+State table for 3-state, 2-symbol busy beaver Tape symbol Current state A Current state B Current state C
+Write symbol Move tape Next state Write symbol Move tape Next state Write symbol Move tape Next state
+0 1 R B 1 L A 1 L B
+1 1 L C 1 R B 1 R HALT
+Additional details required to visualise or implement Turing machines
+
+In the words of van Emde Boas (1990), p. 6: "The set-theoretical object [his formal seven-tuple description similar to the above] provides only partial information on how the machine will behave and what its computations will look like."
+
+For instance,
+
+ There will need to be many decisions on what the symbols actually look like, and a failproof way of reading and writing symbols indefinitely.
+ The shift left and shift right operations may shift the tape head across the tape, but when actually building a Turing machine it is more practical to make the tape slide back and forth under the head instead.
+ The tape can be finite, and automatically extended with blanks as needed (which is closest to the mathematical definition), but it is more common to think of it as stretching infinitely at one or both ends and being pre-filled with blanks except on the explicitly given finite fragment the tape head is on. (This is, of course, not implementable in practice.) The tape cannot be fixed in length, since that would not correspond to the given definition and would seriously limit the range of computations the machine can perform to those of a linear bounded automaton if the tape was proportional to the input size, or finite-state machine if it was strictly fixed-length.
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+ You must give any other recipients of the Work or Derivative Works a copy of this License; and
+ You must cause any modified files to carry prominent notices stating that You changed the files; and
+ You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+ If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+
+How to apply the Apache License to your work
+
+Include a copy of the Apache License, typically in a file called LICENSE, in your work, and consider also including a NOTICE file that references the License.
+
+To apply the Apache License to specific files in your work, attach the following boilerplate declaration, replacing the fields enclosed by brackets "[]" with your own identifying information. (Don't include the brackets!) Enclose the text in the appropriate comment syntax for the file format. We also recommend that you include a file or class name and description of purpose on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+Human TP53 gene
+
+In humans, a common polymorphism involves the substitution of an arginine for a proline at codon position 72 of exon 4. Many studies have investigated a genetic link between this variation and cancer susceptibility; however, the results have been controversial. For instance, a meta-analysis from 2009 failed to show a link for cervical cancer.[15] A 2011 study found that the TP53 proline mutation did have a profound effect on pancreatic cancer risk among males.[16] A study of Arab women found that proline homozygosity at TP53 codon 72 is associated with a decreased risk for breast cancer.[17] One study suggested that TP53 codon 72 polymorphisms, MDM2 SNP309, and A2164G may collectively be associated with non-oropharyngeal cancer susceptibility and that MDM2 SNP309 in combination with TP53 codon 72 may accelerate the development of non-oropharyngeal cancer in women.[18] A 2011 study found that TP53 codon 72 polymorphism was associated with an increased risk of lung cancer.[19]
+
+Meta-analyses from 2011 found no significant associations between TP53 codon 72 polymorphisms and both colorectal cancer risk[20] and endometrial cancer risk.[21] A 2011 study of a Brazilian birth cohort found an association between the non-mutant arginine TP53 and individuals without a family history of cancer.[22] Another 2011 study found that the p53 homozygous (Pro/Pro) genotype was associated with a significantly increased risk for renal cell carcinoma.[23]
+Function
+DNA damage and repair
+
+p53 plays a role in regulation or progression through the cell cycle, apoptosis, and genomic stability by means of several mechanisms:
+
+ It can activate DNA repair proteins when DNA has sustained damage. Thus, it may be an important factor in aging.[24]
+ It can arrest growth by holding the cell cycle at the G1/S regulation point on DNA damage recognition—if it holds the cell here for long enough, the DNA repair proteins will have time to fix the damage and the cell will be allowed to continue the cell cycle.
+ It can initiate apoptosis (i.e., programmed cell death) if DNA damage proves to be irreparable.
+ It is essential for the senescence response to short telomeres.
+
+p53 pathway: In a normal cell, p53 is inactivated by its negative regulator, mdm2. Upon DNA damage or other stresses, various pathways will lead to the dissociation of the p53 and mdm2 complex. Once activated, p53 will induce a cell cycle arrest to allow either repair and survival of the cell or apoptosis to discard the damaged cell. How p53 makes this choice is currently unknown.
+
+WAF1/CIP1 encoding for p21 and hundreds of other down-stream genes. p21 (WAF1) binds to the G1-S/CDK (CDK4/CDK6, CDK2, and CDK1) complexes (molecules important for the G1/S transition in the cell cycle) inhibiting their activity.
+
+When p21(WAF1) is complexed with CDK2, the cell cannot continue to the next stage of cell division. A mutant p53 will no longer bind DNA in an effective way, and, as a consequence, the p21 protein will not be available to act as the "stop signal" for cell division.[25] Studies of human embryonic stem cells (hESCs) commonly describe the nonfunctional p53-p21 axis of the G1/S checkpoint pathway with subsequent relevance for cell cycle regulation and the DNA damage response (DDR). Importantly, p21 mRNA is clearly present and upregulated after the DDR in hESCs, but p21 protein is not detectable. In this cell type, p53 activates numerous microRNAs (like miR-302a, miR-302b, miR-302c, and miR-302d) that directly inhibit the p21 expression in hESCs.
+
+The p21 protein binds directly to cyclin-CDK complexes that drive forward the cell cycle and inhibits their kinase activity, thereby causing cell cycle arrest to allow repair to take place. p21 can also mediate growth arrest associated with differentiation and a more permanent growth arrest associated with cellular senescence. The p21 gene contains several p53 response elements that mediate direct binding of the p53 protein, resulting in transcriptional activation of the gene encoding the p21 protein.
+
+The p53 and RB1 pathways are linked via p14ARF, raising the possibility that the pathways may regulate each other.[26]
+
+p53 expression can be stimulated by UV light, which also causes DNA damage. In this case, p53 can initiate events leading to tanning.[27][28]
+Stem cells
+
+Levels of p53 play an important role in the maintenance of stem cells throughout development and the rest of human life.
+
+In human embryonic stem cells (hESCs)s, p53 is maintained at low inactive levels.[29] This is because activation of p53 leads to rapid differentiation of hESCs.[30] Studies have shown that knocking out p53 delays differentiation and that adding p53 causes spontaneous differentiation, showing how p53 promotes differentiation of hESCs and plays a key role in cell cycle as a differentiation regulator. When p53 becomes stabilized and activated in hESCs, it increases p21 to establish a longer G1. This typically leads to abolition of S-phase entry, which stops the cell cycle in G1, leading to differentiation. Work in mouse embryonic stem cells has recently shown however that the expression of P53 does not necessarily lead to differentiation.[31] p53 also activates miR-34a and miR-145, which then repress the hESCs pluripotency factors, further instigating differentiation.[29]
+
+In adult stem cells, p53 regulation is important for maintenance of stemness in adult stem cell niches. Mechanical signals such as hypoxia affect levels of p53 in these niche cells through the hypoxia inducible factors, HIF-1α and HIF-2α. While HIF-1α stabilizes p53, HIF-2α suppresses it.[32] Suppression of p53 plays important roles in cancer stem cell phenotype, induced pluripotent stem cells and other stem cell roles and behaviors, such as blastema formation. Cells with decreased levels of p53 have been shown to reprogram into stem cells with a much greater efficiency than normal cells.[33][34] Papers suggest that the lack of cell cycle arrest and apoptosis gives more cells the chance to be reprogrammed. Decreased levels of p53 were also shown to be a crucial aspect of blastema formation in the legs of salamanders.[35] p53 regulation is very important in acting as a barrier between stem cells and a differentiated stem cell state, as well as a barrier between stem cells being functional and being cancerous.[36]
+
+Specifically, the term Galilean invariance today usually refers to this principle as applied to Newtonian mechanics, that is, Newton's laws of motion hold in all frames related to one another by a Galilean transformation. In other words, all frames related to one another by such a transformation are inertial (meaning, Newton's equation of motion is valid in these frames). In this context it is sometimes called Newtonian relativity.
+
+Among the axioms from Newton's theory are:
+
+ There exists an absolute space, in which Newton's laws are true. An inertial frame is a reference frame in relative uniform motion to absolute space.
+ All inertial frames share a universal time.
+
+Galilean relativity can be shown as follows. Consider two inertial frames S and S' . A physical event in S will have position coordinates r = (x, y, z) and time t in S, and r' = (x' , y' , z' ) and time t' in S' . By the second axiom above, one can synchronize the clock in the two frames and assume t = t' . Suppose S' is in relative uniform motion to S with velocity v. Consider a point object whose position is given by functions r' (t) in S' and r(t) in S. We see that
+
+ r ′ ( t ) = r ( t ) − v t . r'(t) = r(t) - v t.\,
+
+The velocity of the particle is given by the time derivative of the position:
+
+ u ′ ( t ) = d d t r ′ ( t ) = d d t r ( t ) − v = u ( t ) − v . u'(t) = \frac{d}{d t} r'(t) = \frac{d}{d t} r(t) - v = u(t) - v.
+
+Another differentiation gives the acceleration in the two frames:
+
+ a ′ ( t ) = d d t u ′ ( t ) = d d t u ( t ) − 0 = a ( t ) . a'(t) = \frac{d}{d t} u'(t) = \frac{d}{d t} u(t) - 0 = a(t).
+
+It is this simple but crucial result that implies Galilean relativity. Assuming that mass is invariant in all inertial frames, the above equation shows Newton's laws of mechanics, if valid in one frame, must hold for all frames.[1] But it is assumed to hold in absolute space, therefore Galilean relativity holds.
+
+Newton's theory versus special relativity
+
+A comparison can be made between Newtonian relativity and special relativity.
+
+Some of the assumptions and properties of Newton's theory are:
+
+ The existence of infinitely many inertial frames. Each frame is of infinite size (the entire universe may be covered by many linearly equivalent frames). Any two frames may be in relative uniform motion. (The relativistic nature of mechanics derived above shows that the absolute space assumption is not necessary.)
+ The inertial frames may move in all possible relative forms of uniform motion.
+ There is a universal, or absolute, notion of elapsed time.
+ Two inertial frames are related by a Galilean transformation.
+ In all inertial frames, Newton's laws, and gravity, hold.
+
+In comparison, the corresponding statements from special relativity are as follows:
+
+ The existence, as well, of infinitely many non-inertial frames, each of which referenced to (and physically determined by) a unique set of spacetime coordinates. Each frame may be of infinite size, but its definition is always determined locally by contextual physical conditions. Any two frames may be in relative non-uniform motion (as long as it is assumed that this condition of relative motion implies a relativistic dynamical effect – and later, mechanical effect in general relativity – between both frames).
+ Rather than freely allowing all conditions of relative uniform motion between frames of reference, the relative velocity between two inertial frames becomes bounded above by the speed of light.
+ Instead of universal elapsed time, each inertial frame possesses its own notion of elapsed time.
+ The Galilean transformations are replaced by Lorentz transformations.
+ In all inertial frames, all laws of physics are the same.
+
+Both theories assume the existence of inertial frames. In practice, the size of the frames in which they remain valid differ greatly, depending on gravitational tidal forces.
+
+In the appropriate context, a local Newtonian inertial frame, where Newton's theory remains a good model, extends to roughly 107 light years.
+
+In special relativity, one considers Einstein's cabins, cabins that fall freely in a gravitational field. According to Einstein's thought experiment, a man in such a cabin experiences (to a good approximation) no gravity and therefore the cabin is an approximate inertial frame. However, one has to assume that the size of the cabin is sufficiently small so that the gravitational field is approximately parallel in its interior. This can greatly reduce the sizes of such approximate frames, in comparison to Newtonian frames. For example, an artificial satellite orbiting the Earth can be viewed as a cabin. However, reasonably sensitive instruments could detect "microgravity" in such a situation because the "lines of force" of the Earth's gravitational field converge.
+
+In general, the convergence of gravitational fields in the universe dictates the scale at which one might consider such (local) inertial frames. For example, a spaceship falling into a black hole or neutron star would (at a certain distance) be subjected to tidal forces strong enough to crush it in width and tear it apart in length.[2] In comparison, however, such forces might only be uncomfortable for the astronauts inside (compressing their joints, making it difficult to extend their limbs in any direction perpendicular to the gravity field of the star). Reducing the scale further, the forces at that distance might have almost no effects at all on a mouse. This illustrates the idea that all freely falling frames are locally inertial (acceleration and gravity-free) if the scale is chosen correctly.[2]
+
+Poetry (a term derived from the Greek word poiesis, "making"), also called verse,[note 1] is a form of literature that uses aesthetic and often rhythmic[1][2][3] qualities of language − such as phonaesthetics, sound symbolism, and metre − to evoke meanings in addition to, or in place of, a prosaic ostensible meaning. A poem is a literary composition, written by a poet, using this principle.
+
+Poetry has a long and varied history, evolving differentially across the globe. It dates back at least to prehistoric times with hunting poetry in Africa and to panegyric and elegiac court poetry of the empires of the Nile, Niger, and Volta River valleys.[4] Some of the earliest written poetry in Africa occurs among the Pyramid Texts written during the 25th century BCE. The earliest surviving Western Asian epic poem, the Epic of Gilgamesh, was written in the Sumerian language.
+
+Early poems in the Eurasian continent evolved from folk songs such as the Chinese Shijing as well as from religious hymns (the Sanskrit Rigveda, the Zoroastrian Gathas, the Hurrian songs, and the Hebrew Psalms); or from a need to retell oral epics, as with the Egyptian Story of Sinuhe, Indian epic poetry, and the Homeric epics, the Iliad and the Odyssey.
+
+Ancient Greek attempts to define poetry, such as Aristotle's Poetics, focused on the uses of speech in rhetoric, drama, song, and comedy. Later attempts concentrated on features such as repetition, verse form, and rhyme, and emphasized the aesthetics which distinguish poetry from more objectively-informative prosaic writing.
+
+Poetry uses forms and conventions to suggest differential interpretations of words, or to evoke emotive responses. Devices such as assonance, alliteration, onomatopoeia, and rhythm may convey musical or incantatory effects. The use of ambiguity, symbolism, irony, and other stylistic elements of poetic diction often leaves a poem open to multiple interpretations. Similarly, figures of speech such as metaphor, simile, and metonymy[5] establish a resonance between otherwise disparate images—a layering of meanings, forming connections previously not perceived. Kindred forms of resonance may exist, between individual verses, in their patterns of rhyme or rhythm.
+
+Some poetry types are unique to particular cultures and genres and respond to characteristics of the language in which the poet writes. Readers accustomed to identifying poetry with Dante, Goethe, Mickiewicz, or Rumi may think of it as written in lines based on rhyme and regular meter. There are, however, traditions, such as Biblical poetry, that use other means to create rhythm and euphony. Much modern poetry reflects a critique of poetic tradition,[6] testing the principle of euphony itself or altogether forgoing rhyme or set rhythm.[7][8]
+
+Poets – as, from the Greek, "makers" of language – have contributed to the evolution of the linguistic, expressive, and utilitarian qualities of their languages. In an increasingly globalized world, poets often adapt forms, styles, and techniques from diverse cultures and languages.
+
+A Western cultural tradition (extending at least from Homer to Rilke) associates the production of poetry with inspiration – often by a Muse (either classical or contemporary), or through other (often canonised) poets' work which sets some kind of example or challenge.
+
+In first-person poems, the lyrics are spoken by an "I", a character who may be termed the speaker, distinct from the poet (the author). Thus if, for example, a poem asserts, "I killed my enemy in Reno", it is the speaker, not the poet, who is the killer (unless this "confession" is a form of metaphor which needs to be considered in closer context – via close reading).
+
+Early works
+
+Some scholars believe that the art of poetry may predate literacy, and developed from folk epics and other oral genres.[9][10] Others, however, suggest that poetry did not necessarily predate writing.[11]
+
+The oldest surviving epic poem, the Epic of Gilgamesh, dates from the 3rd millennium BCE in Sumer (in Mesopotamia, present-day Iraq), and was written in cuneiform script on clay tablets and, later, on papyrus.[12] The Istanbul tablet#2461, dating to c. 2000 BCE, describes an annual rite in which the king symbolically married and mated with the goddess Inanna to ensure fertility and prosperity; some have labelled it the world's oldest love poem.[13][14] An example of Egyptian epic poetry is The Story of Sinuhe (c. 1800 BCE).[15]
+
+Other ancient epics includes the Greek Iliad and the Odyssey; the Persian Avestan books (the Yasna); the Roman national epic, Virgil's Aeneid (written between 29 and 19 BCE); and the Indian epics, the Ramayana and the Mahabharata. Epic poetry appears to have been composed in poetic form as an aid to memorization and oral transmission in ancient societies.[11][16]
+
+Other forms of poetry, including such ancient collections of religious hymns as the Indian Sanskrit-language Rigveda, the Avestan Gathas, the Hurrian songs, and the Hebrew Psalms, possibly developed directly from folk songs. The earliest entries in the oldest extant collection of Chinese poetry, the Classic of Poetry (Shijing), were initially lyrics.[17] The Shijing, with its collection of poems and folk songs, was heavily valued by the philosopher Confucius and is considered to be one of the official Confucian classics. His remarks on the subject have become an invaluable source in ancient music theory.[18]
+
+The efforts of ancient thinkers to determine what makes poetry distinctive as a form, and what distinguishes good poetry from bad, resulted in "poetics"—the study of the aesthetics of poetry.[19] Some ancient societies, such as China's through the Shijing, developed canons of poetic works that had ritual as well as aesthetic importance.[20] More recently, thinkers have struggled to find a definition that could encompass formal differences as great as those between Chaucer's Canterbury Tales and Matsuo Bashō's Oku no Hosomichi, as well as differences in content spanning Tanakh religious poetry, love poetry, and rap.[21]
+
+Until recently, the earliest examples of stressed poetry had been thought to be works composed by Romanos the Melodist (fl. 6th century CE). However, Tim Whitmarsh writes that an inscribed Greek poem predated Romanos' stressed poetry. [22][23][24]
+
+"Figure 32.—Julius obtaining banana by using pole to climb up on and spring from. Figure 33.—Using pole to swing out on so that banana could be grasped. Figure 34.—Using stick to draw carrot within reach." From The mental life of monkeys and apes; a study of ideational behavior, by Robert Mearns Yerkes, 1916
+
+The monkey and banana problem is a famous toy problem in artificial intelligence, particularly in logic programming and planning.
+Formulation of the problem
+
+A monkey is in a room. Suspended from the ceiling is a bunch of bananas, beyond the monkey's reach. However, in the room there are also a chair and a stick. The ceiling is just the right height so that a monkey standing on a chair could knock the bananas down with the stick. The monkey knows how to move around, carry other things around, reach for the bananas, and wave a stick in the air. What is the best sequence of actions for the monkey?
+Purpose of the problem
+
+The problem seeks to answer the question of whether monkeys are intelligent. Both humans and monkeys have the ability to use mental maps to remember things like where to go to find shelter, or how to avoid danger. They can also remember where to go to gather food and water, as well as how to communicate with each other. Monkeys have the ability not only to remember how to hunt and gather but to learn new things, as is the case with the monkey and the bananas: despite the fact that the monkey may never have been in an identical situation, with the same artifacts at hand, a monkey is capable of concluding that it needs to make a ladder, position it below the bananas, and climb up to reach for them.
+
+The degree to which such abilities should be ascribed to instinct or learning is a matter of debate.
+
+In 1984, a pigeon was observed as having the capacity to solve a problem.[1][2]
+Software solutions
+
+The problem is used as a toy problem for computer science. It can be solved with an expert system such as CLIPS. The example set of rules that CLIPS provides is somewhat fragile in that naive changes to the rulebase that might seem to a human of average intelligence to make common sense can cause the engine to fail to get the monkey to reach the banana.[3]
+
+Other examples exist using Rules Based System (RBS) a project implemented in Python.[4][5]
+
+VBScript ("Microsoft Visual Basic Scripting Edition") is a deprecated Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers without error handling and with subroutines and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.
+
+VBScript uses the Component Object Model to access elements of the environment within which it is running; for example, the FileSystemObject (FSO) is used to create, read, update and delete files. VBScript has been installed by default in every desktop release of Microsoft Windows since Windows 98;[1] in Windows Server since Windows NT 4.0 Option Pack;[2] and optionally with Windows CE (depending on the device it is installed on).
+
+A VBScript script must be executed within a host environment, of which there are several provided with Microsoft Windows, including: Windows Script Host (WSH), Internet Explorer (IE), and Internet Information Services (IIS).[3] Additionally, the VBScript hosting environment is embeddable in other programs, through technologies such as the Microsoft Script Control (msscript.ocx).
+History
+
+VBScript began as part of the Microsoft Windows Script Technologies, launched in 1996. This technology (which also included JScript) was initially targeted at web developers. During a period of just over two years, VBScript advanced from version 1.0 to 2.0, and over that time it gained support from Windows system administrators seeking an automation tool more powerful than the batch language first developed in the early 1980s.[4] On August 1, 1996, Internet Explorer was released with features that included VBScript.[5]
+
+In version 5.0, the functionality of VBScript was increased with new features including regular expressions; classes; the With statement;[6] the Eval, Execute, and ExecuteGlobal functions to evaluate and execute script commands built during the execution of another script; a function-pointer system via GetRef,[7] and Distributed COM (DCOM) support.
+
+In version 5.5, SubMatches[8] were added to the regular expression class in VBScript, to finally allow script authors to capture the text within the expression's groups. That capability had already been available in JScript.
+
+With the advent of the .NET Framework, the scripting team took the decision to implement future support for VBScript within ASP.NET for web development,[9] and therefore no new versions of the VBScript engine would be developed. It would henceforth be supported by Microsoft's Sustaining Engineering Team, who are responsible for bug fixes and security enhancements. For Windows system administrators, Microsoft suggests migrating to Windows PowerShell, as VBScript is deprecated and will eventually be removed from Windows.
+
+On October 9, 2023, Microsoft announced plans to deprecate and eventually remove VBScript from future Windows versions.[10]
+Environments
+
+When employed for client-side web development in Microsoft Internet Explorer, VBScript is similar in function to JavaScript. It is used to write executable functions that are embedded in or included from HTML pages and interact with the Document Object Model (DOM) of the page, to perform tasks not possible in HTML alone. However, other web browsers such as Firefox and Opera and recently Chrome do not have built-in support for VBScript. This means that where client-side scripting and cross-browser compatibility are required, developers usually choose JavaScript over most other programming languages, such as VBScript.
+
+VBScript is also used for server-side processing of web pages, most notably with Microsoft Active Server Pages (ASP). The ASP engine and type library, asp.dll, invokes vbscript.dll to run VBScript scripts. VBScript that is embedded in an ASP page is contained within <% and %> context switches. The following example of an ASP page with VBScript displays the current time in 24-hour format, but it is also used as the default script for error messages with the Windows operating systems.
+
+FAISS, including its GPU version (faiss-gpu), primarily works with NumPy arrays. This means that even when using FAISS with GPU support, the input data typically needs to be in the form of a NumPy array. However, this doesn't mean that you can't use PyTorch tensors with FAISS; it just means that you'll need to convert PyTorch tensors to NumPy arrays before using them with FAISS functions.
+
+The reason for this requirement is that FAISS internally uses NumPy arrays for its data structures and computations, and although PyTorch tensors and NumPy arrays are often interoperable, they are not the same thing.
+
+Here's what you typically need to do when working with PyTorch tensors and FAISS:
+
+ Convert PyTorch Tensors to NumPy Arrays:
+ If your data is in a PyTorch tensor, you can convert it to a NumPy array using the .numpy() method if the tensor is on the CPU.
+ If the tensor is on the GPU, you should first move it to the CPU with .cpu() and then convert it to a NumPy array.
+
+ Use FAISS for Operations:
+ Perform your necessary operations in FAISS using the NumPy arrays.
+
+ Convert Back to PyTorch Tensors if Needed:
+ If you need to bring the results back into PyTorch, you can convert the NumPy arrays back to PyTorch tensors.
+This conversion process is typically fast and efficient, but it's important to be aware of it, especially when working with large datasets or in situations where memory usage and computational efficiency are critical concerns.
+In summary, while faiss-gpu does not directly operate on PyTorch tensors, the conversion between PyTorch tensors and NumPy arrays is straightforward and usually doesn't pose a significant bottleneck in terms of performance.
-Addition to a significant decrease in hepatic lipid accumulation in the IOE group, which inhibited energy intake by propionate enrichment, hepatic lipids were also significantly reduced in the mice in the IOP group, which was largely enriched with butyrate. Compared with the IOE group, IOP had a stronger regulatory effect on hepatic metabolism and triglyceride metabolism and higher levels of TCA cycle in the host. In addition, butyrate has the ability to promote browning of white adipose tissue (WAT) to brown adipose tissue (BAT).^[@ref39],[@ref40]^ WAT stores energy, whereas BAT uses energy for heating and consequently host energy expenditure increases.^[@ref41],[@ref42]^ However, adipose tissue weight does not change after WAT browning.^[@ref43]^ Therefore, the weight of adipose tissue of mice in the IOP group dominated by butyrate was greater than that of the mice in the IOE group dominated by propionate.
+Resetting the chassis intrusion status on a Mellanox switch using the I2C (Inter-Integrated Circuit) interface involves a series of specific steps. Please note that this process is technical and should ideally be performed by someone with experience in managing network equipment and familiarity with the I2C protocol. Here's a general outline of how you might approach this task:
-In conclusion ([Figure [7](#fig7){ref-type="fig"}](#fig7){ref-type="fig"}C), the improvement of obesity condition in mice by both *I. obliquus* extracts was attributed to their effects on gut microbiota and SCFA profiles. IOE increased the levels of propionate-producing bacteria *Bacteroides* and *Akkermansia* in the cecum of HFD-fed mice, resulting in the enrichment of propionate. Propionate reduced weight gain in mice by inhibiting energy intake. IOP increased the levels of butyrate-production-associated bacteria *Lactobacillus* and the *Bacteroidales* S24-7 group in the cecum of HFD-fed mice, resulting in the enrichment of butyrate. Butyrate increased energy consumption, TCA cycle levels, and degradation of carbohydrates and lipids in mice by promoting mitochondrial decoupling.
+ Access the I2C Interface: To interact with the I2C interface, you'll need to use a system that can communicate over I2C, such as a microcontroller or a computer with an I2C adapter. The exact method of accessing the I2C interface will depend on the equipment you are using.
-Conclusions {#sec4}
-===========
+ Identify the Correct I2C Address: Each device on the I2C bus has a unique address. You need to find out the address of the chassis intrusion sensor or the relevant control register on the Mellanox switch. This information should be available in the switch's hardware documentation.
-IOE and IOP ameliorated HFD-induced obesity condition in mice through differential modulatory effects on gut microbial metabolism. Moreover, we found the connections between cecal butyrate (not propionate) and chemicals of mice, including four metabolites of the TCA cycle and other metabolism-related chemicals.
+ Read the Current Intrusion Status: Before resetting the intrusion status, it's often a good practice to read the current status. This can be done by sending a read command to the appropriate address and register.
-Materials and Methods {#sec5}
-=====================
+ Send a Reset Command: To reset the chassis intrusion status, you will need to write to a specific register of the intrusion detection system. This typically involves sending a particular byte or set of bytes to a specific address. The exact command will depend on the Mellanox switch model and its firmware.
-Preparation of IOE/IOP {#sec5.1}
-----------------------
+ Verify the Reset: After sending the reset command, you should read back the intrusion status to ensure that it has been successfully reset.
-The dried and powdered *I. obliquus* (1.0 kg) was extracted with ultrapure water (30 L) at 90 °C for 3 h and concentrated. The supernatant was evaporated in vacuo at 45 °C, followed by extracting with 4 vol of ethanol to get crude extract. The extract was deproteinized by the Sevage method five times. The supernatant was dried in vacuo and lyophilized to get IOP (62.5 g). After *I. obliquus* was extracted with water, the residue was extracted with 80% ethanol at 80 °C in a water bath for 2 h. The supernatant was dried in vacuo and lyophilized to get IOE (30.9 g).
+ Log the Action: For security and auditing purposes, it's advisable to log this action in your system's records.
-Animal Experimental Design {#sec5.2}
---------------------------
+It is crucial to consult the specific documentation for your Mellanox switch model for detailed instructions and the correct register addresses. Improperly interacting with the I2C interface can cause unintended behavior or damage to the switch.
-The experimental protocol was approved by the Animal Ethics Committee of Jilin University and complied with national laws. Five-week-old C57BL/6J male mice (15--17 g) were divided into four groups, 12 mice per group. The mice in the NCD group were fed with normal chow diet, and the mice in the HFD group, IOE group, and IOP group were fed with high-fat diet. The compositions of mice diets are presented in [Tables S4 and S5](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf). The mice in the IOP group were gavaged with IOP at a dose of 1000 mg/kg per day according to previous studies,^[@ref44]^ and the mice in the IOE group were gavaged with IOE at a dose of 500 mg/kg per day according to the extraction rate of IOE/IOP and the dose of IOP. After 14 weeks of treatment, the mice were sacrificed for specimens.
+If you are not familiar with this level of hardware interaction, it is recommended to seek assistance from a qualified network engineer or contact Mellanox's technical support for guidance.
-Oral Glucose Tolerance Test (OGTT) {#sec5.3}
-----------------------------------
+Philosophy of mind is a branch of philosophy that studies the ontology and nature of the mind and its relationship with the body. The mind–body problem is a paradigmatic issue in philosophy of mind, although a number of other issues are addressed, such as the hard problem of consciousness and the nature of particular mental states.[1][2][3] Aspects of the mind that are studied include mental events, mental functions, mental properties, consciousness and its neural correlates, the ontology of the mind, the nature of cognition and of thought, and the relationship of the mind to the body.
-OGTT was performed using a previously described method.^[@ref45]^
+Dualism and monism are the two central schools of thought on the mind–body problem, although nuanced views have arisen that do not fit one or the other category neatly.
-Serum Biochemical Analysis {#sec5.4}
---------------------------
+ Dualism finds its entry into Western philosophy thanks to René Descartes in the 17th century.[4] Substance dualists like Descartes argue that the mind is an independently existing substance, whereas property dualists maintain that the mind is a group of independent properties that emerge from and cannot be reduced to the brain, but that it is not a distinct substance.[5]
+ Monism is the position that mind and body are ontologically indiscernible entities, not dependent substances. This view was espoused by the 17th-century rationalist Baruch Spinoza.[6] Physicalists argue that only entities postulated by physical theory exist, and that mental processes will eventually be explained in terms of these entities as physical theory continues to evolve. Physicalists maintain various positions on the prospects of reducing mental properties to physical properties (many of whom adopt compatible forms of property dualism),[7][8][9][10][11][12] and the ontological status of such mental properties remains unclear.[11][13][14] Idealists maintain that the mind is all that exists and that the external world is either mental itself, or an illusion created by the mind. Neutral monists such as Ernst Mach and William James argue that events in the world can be thought of as either mental (psychological) or physical depending on the network of relationships into which they enter, and dual-aspect monists such as Spinoza adhere to the position that there is some other, neutral substance, and that both matter and mind are properties of this unknown substance. The most common monisms in the 20th and 21st centuries have all been variations of physicalism; these positions include behaviorism, the type identity theory, anomalous monism and functionalism.[15]
-Serum and liver lipid were measured using the method of kits obtained from Nanjing Jiancheng Bioengineering Institute (Nanjing, China).
+Most modern philosophers of mind adopt either a reductive physicalist or non-reductive physicalist position, maintaining in their different ways that the mind is not something separate from the body.[15] These approaches have been particularly influential in the sciences, especially in the fields of sociobiology, computer science (specifically, artificial intelligence), evolutionary psychology and the various neurosciences.[16][17][18][19] Reductive physicalists assert that all mental states and properties will eventually be explained by scientific accounts of physiological processes and states.[20][21][22] Non-reductive physicalists argue that although the mind is not a separate substance, mental properties supervene on physical properties, or that the predicates and vocabulary used in mental descriptions and explanations are indispensable, and cannot be reduced to the language and lower-level explanations of physical science.[23][24] Continued neuroscientific progress has helped to clarify some of these issues; however, they are far from being resolved. Modern philosophers of mind continue to ask how the subjective qualities and the intentionality of mental states and properties can be explained in naturalistic terms.[25][26]
-RNA Preparation and Quantitative PCR Analysis {#sec5.5}
----------------------------------------------
+However, a number of issues have been recognized with non-reductive physicalism. First, it is irreconcilable with self-identity over time. Secondly, intentional states of consciousness do not make sense on non-reductive physicalism. Thirdly, free will is impossible to reconcile with either reductive or non-reductive physicalism. Fourthly, it fails to properly explain the phenomenon of mental causation.[27]
+Mind–body problem
+Main article: Mind–body problem
+René Descartes' illustration of mind/body dualism
-The total RNA extraction and the reverse transcription (RT)-qPCR analysis of the gene expression were performed using a previously described method.^[@ref46]^ Primer sequences for the targeted mouse genes are shown in [Table S6](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf).
+The mind–body problem concerns the explanation of the relationship that exists between minds, or mental processes, and bodily states or processes.[1] The main aim of philosophers working in this area is to determine the nature of the mind and mental states/processes, and how—or even if—minds are affected by and can affect the body.
-Sample Collection {#sec5.6}
------------------
+Perceptual experiences depend on stimuli that arrive at our various sensory organs from the external world, and these stimuli cause changes in our mental states, ultimately causing us to feel a sensation, which may be pleasant or unpleasant. Someone's desire for a slice of pizza, for example, will tend to cause that person to move his or her body in a specific manner and in a specific direction to obtain what he or she wants. The question, then, is how it can be possible for conscious experiences to arise out of a lump of gray matter endowed with nothing but electrochemical properties.[15]
-Urine was collected using metabolic cages at 14th week, and 50 μL of sodium azide solution (0.1% w/w) was added into each urine sample. Cecum contents were washed from cecum in a 2 mL Eppendorf tube containing 1.0 mL of cold phosphate-buffered saline (PBS) (pH 7.4). All samples were then stored in a −80 °C freezer for later analysis.
+A related problem is how someone's propositional attitudes (e.g. beliefs and desires) cause that individual's neurons to fire and muscles to contract. These comprise some of the puzzles that have confronted epistemologists and philosophers of mind from the time of René Descartes.[4]
+Dualist solutions to the mind–body problem
+See also: Mind in eastern philosophy
-All samples were thawed at room temperature. Serum was prepared by mixing 100 μL of each sample with a solution of 500 μL of PBS in D~2~O (containing 3-(tri-methyl-silyl) propionic-2,2,3,3-*d*4 acid sodium salt (TSP)). Then, 200 μL exudate of cecum contents was mixed with a solution of 400 μL of PBS in D~2~O (containing TSP). Supernatants (550 μL) were pipetted into NMR analysis tubes after centrifuging (15 000 rpm, 15 min, 4 °C) and passing through 0.22 μm membrane filters. For each urine sample, 400 μL of the sample was mixed with a solution of 200 μL of PBS in H~2~O. Then, 500 μL of supernatants was pipetted into NMR analysis tubes after centrifuging (15 000 rpm, 5 min, 4 °C), and 50 μL of D~2~O containing TSP was also added to each tube. D~2~O provided a field frequency lock and TSP a chemical shift reference (^1^H, δ 0.0).
+Dualism is a set of views about the relationship between mind and matter (or body). It begins with the claim that mental phenomena are, in some respects, non-physical.[5] One of the earliest known formulations of mind–body dualism was expressed in the eastern Samkhya and Yoga schools of Hindu philosophy (c. 650 BCE), which divided the world into purusha (mind/spirit) and prakriti (material substance).[28] Specifically, the Yoga Sutra of Patanjali presents an analytical approach to the nature of the mind.
-NMR Data Acquisition and Processing {#sec5.7}
------------------------------------
+In Western Philosophy, the earliest discussions of dualist ideas are in the writings of Plato who suggested that humans' intelligence (a faculty of the mind or soul) could not be identified with, or explained in terms of, their physical body.[29][30] However, the best-known version of dualism is due to René Descartes (1641), and holds that the mind is a non-extended, non-physical substance, a "res cogitans".[4] Descartes was the first to clearly identify the mind with consciousness and self-awareness, and to distinguish this from the brain, which was the seat of intelligence. He was therefore the first to formulate the mind–body problem in the form in which it still exists today.[4]
+Arguments for dualism
-All samples were analyzed by an AVANCE III 600M MHz NMR spectrometer at 298.2 K. ^1^H NMR spectra were acquired by one-dimensional (1D) version CPMG (serum samples) and noesyphpr (urine and cecal samples) pulse sequence with water suppression during the relaxation delay of 3 s and a mixing time of 0.1 s. Sixty-four free induction decays were collected into 64 K data points with a spectral width of 7812.5 Hz (serum samples) and 8417.5 Hz (urine and cecal samples) and an acquisition time of 2 s. Free induction decay (FID) was zero-filled to 64 K prior to Fourier transformation.
+The most frequently used argument in favor of dualism appeals to the common-sense intuition that conscious experience is distinct from inanimate matter. If asked what the mind is, the average person would usually respond by identifying it with their self, their personality, their soul, or another related entity. They would almost certainly deny that the mind simply is the brain, or vice versa, finding the idea that there is just one ontological entity at play to be too mechanistic or unintelligible.[5] Modern philosophers of mind think that these intuitions are misleading, and that critical faculties, along with empirical evidence from the sciences, should be used to examine these assumptions and determine whether there is any real basis to them.[5]
-Metabolite identifications were confirmed using the Human Metabolome Database (HMDB) and previous studies,^[@ref47]^ based on chemical shifts of hydrogen and peak multiplicity ([Figures S5--S7 and Table S7](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf)).
+The mental and the physical seem to have quite different, and perhaps irreconcilable, properties.[31] Mental events have a subjective quality, whereas physical events do not. So, for example, one can reasonably ask what a burnt finger feels like, or what a blue sky looks like, or what nice music sounds like to a person. But it is meaningless, or at least odd, to ask what a surge in the uptake of glutamate in the dorsolateral portion of the prefrontal cortex feels like.
-All of the spectra were manually phased and baseline-corrected in software MestreNova 12.0 (Mestre-lab Research SL). Each spectrum was segmented into regions with a width of 0.005 ppm between δ 9.6 and 0.4. The δ 5.48--6.20 region in urine spectra and δ 4.72--5.20 region in all spectra were excluded to eliminate the effects of urea signals and water suppression. All remaining regions of the spectra were then normalized to the total sum of the integrated spectral area to reduce any significant concentration differences.
+Philosophers of mind call the subjective aspects of mental events "qualia" or "raw feels".[31] There are qualia involved in these mental events that seem particularly difficult to reduce to anything physical. David Chalmers explains this argument by stating that we could conceivably know all the objective information about something, such as the brain states and wavelengths of light involved with seeing the color red, but still not know something fundamental about the situation – what it is like to see the color red.[32]
-Sequencing, Diversity Analysis, and Function Prediction of Cecal Microbiota {#sec5.8}
----------------------------------------------------------------------------
+If consciousness (the mind) can exist independently of physical reality (the brain), one must explain how physical memories are created concerning consciousness. Dualism must therefore explain how consciousness affects physical reality. One possible explanation is that of a miracle, proposed by Arnold Geulincx and Nicolas Malebranche, where all mind–body interactions require the direct intervention of God.
-DNA extraction, sequencing, and data processing were performed using a previously described method.^[@ref48]^
+Another argument that has been proposed by C. S. Lewis[33] is the Argument from Reason: if, as monism implies, all of our thoughts are the effects of physical causes, then we have no reason for assuming that they are also the consequent of a reasonable ground. Knowledge, however, is apprehended by reasoning from ground to consequent. Therefore, if monism is correct, there would be no way of knowing this—or anything else—we could not even suppose it, except by a fluke.
-Four parameters of the alpha diversity were used to assess the overall diversity thoroughly. The Ace and Chao (only presence/absence of taxa considered) indexes determine the richness in a community, while the Shannon and Simpson indexes (additionally accounts for the number of times that each taxon was observed) determine the richness and/or evenness of a community. In addition, a higher Shannon index or a lower Simpson index indicates higher community diversity. Unlike alpha diversity, beta diversity was used to measure the division of diversity between two or more communities. Microbial communities had often been characterized using divergence-based measures of beta diversity to determine whether two or more communities were significantly different.
+The zombie argument is based on a thought experiment proposed by Todd Moody, and developed by David Chalmers in his book The Conscious Mind. The basic idea is that one can imagine one's body, and therefore conceive the existence of one's body, without any conscious states being associated with this body. Chalmers' argument is that it seems possible that such a being could exist because all that is needed is that all and only the things that the physical sciences describe about a zombie must be true of it. Since none of the concepts involved in these sciences make reference to consciousness or other mental phenomena, and any physical entity can be by definition described scientifically via physics, the move from conceivability to possibility is not such a large one.[34] Others such as Dennett have argued that the notion of a philosophical zombie is an incoherent,[35] or unlikely,[36] concept. It has been argued under physicalism that one must either believe that anyone including oneself might be a zombie, or that no one can be a zombie—following from the assertion that one's own conviction about being (or not being) a zombie is a product of the physical world and is therefore no different from anyone else's. This argument has been expressed by Dennett who argues that "Zombies think they are conscious, think they have qualia, think they suffer pains—they are just 'wrong' (according to this lamentable tradition) in ways that neither they nor we could ever discover!"[35] See also the problem of other minds.
+Interactionist dualism
+Portrait of René Descartes by Frans Hals (1648)
-We used PICRUSt (phylogenetic investigation of communities by reconstruction of unobserved states) to perform functional predictions. PICRUSt generates metagenomic predictions from 16S rRNA data using annotations of sequenced genomes in the IMG database. Moreover, the Kyoto Encyclopedia of Genes and Genomes (KEGG) database was used for functional classification.^[@ref49]^
+Interactionist dualism, or simply interactionism, is the particular form of dualism first espoused by Descartes in the Meditations.[4] In the 20th century, its major defenders have been Karl Popper and John Carew Eccles.[37] It is the view that mental states, such as beliefs and desires, causally interact with physical states.[5]
-Statistical Analysis {#sec5.9}
---------------------
+Descartes's argument for this position can be summarized as follows: Seth has a clear and distinct idea of his mind as a thinking thing that has no spatial extension (i.e., it cannot be measured in terms of length, weight, height, and so on). He also has a clear and distinct idea of his body as something that is spatially extended, subject to quantification and not able to think. It follows that mind and body are not identical because they have radically different properties.[4]
-The data were expressed as means ± standard errors of the means (SEM). One-way analysis of variance (ANOVA) was performed to identify significant differences among four groups, followed by the indicated post hoc test (lysergic acid diethylamide (LSD) comparison test). The results were considered statistically significant at *p*-value \< 0.05 unless otherwise specified in the figures. *P*-value between two independent groups was analyzed using an unpaired two-tailed *t*-test. Metabolomics data were subjected to OPLS-DA using software SIMCA 14.0 (Umetrics, Sweden) and used to construct multivariate statistical models. Bivariate correlations were calculated using Spearman's *r* coefficients. Heatmaps were constructed using Excel 2016.
+Seth's mental states (desires, beliefs, etc.) have causal effects on his body and vice versa: A child touches a hot stove (physical event) which causes pain (mental event) and makes her yell (physical event), this in turn provokes a sense of fear and protectiveness in the caregiver (mental event), and so on.
-Accession Number {#sec5.10}
-----------------
+Descartes' argument depends on the premise that what Seth believes to be "clear and distinct" ideas in his mind are necessarily true. Many contemporary philosophers doubt this.[38][39][40] For example, Joseph Agassi suggests that several scientific discoveries made since the early 20th century have undermined the idea of privileged access to one's own ideas. Freud claimed that a psychologically-trained observer can understand a person's unconscious motivations better than the person himself does. Duhem has shown that a philosopher of science can know a person's methods of discovery better than that person herself does, while Malinowski has shown that an anthropologist can know a person's customs and habits better than the person whose customs and habits they are. He also asserts that modern psychological experiments that cause people to see things that are not there provide grounds for rejecting Descartes' argument, because scientists can describe a person's perceptions better than the person herself can.[41][42]
+Other forms of dualism
+Four varieties of dualism. The arrows indicate the direction of the causal interactions. Occasionalism is not shown.
+Psychophysical parallelism
-High-throughput sequencing data have been submitted to the NCBI Sequence Read Archive (SRA) under the accession number PRJNA576716.
+Psychophysical parallelism, or simply parallelism, is the view that mind and body, while having distinct ontological statuses, do not causally influence one another. Instead, they run along parallel paths (mind events causally interact with mind events and brain events causally interact with brain events) and only seem to influence each other.[43] This view was most prominently defended by Gottfried Leibniz. Although Leibniz was an ontological monist who believed that only one type of substance, the monad, exists in the universe, and that everything is reducible to it, he nonetheless maintained that there was an important distinction between "the mental" and "the physical" in terms of causation. He held that God had arranged things in advance so that minds and bodies would be in harmony with each other. This is known as the doctrine of pre-established harmony.[44]
+Occasionalism
-The Supporting Information is available free of charge at [https://pubs.acs.org/doi/10.1021/acsomega.0c01566](https://pubs.acs.org/doi/10.1021/acsomega.0c01566?goto=supporting-info).3D score plots of the OPLS-DA classification; VIP plot of OPLS-DA; pathway analysis based on different metabolites; effects of IOE/IOP on gut microbial diversity; ^1^H NMR spectra of mice serum, urine, and cecal contents (Figures S1--S7); main metabolites of serum, urine, and cecum contents; compositions of NCD and HFD; primer sequence for amplification of the fragments; and metabolite identifications (Tables S1--S7) ([PDF](http://pubs.acs.org/doi/suppl/10.1021/acsomega.0c01566/suppl_file/ao0c01566_si_001.pdf))
+Occasionalism is the view espoused by Nicholas Malebranche as well as Islamic philosophers such as Abu Hamid Muhammad ibn Muhammad al-Ghazali that asserts all supposedly causal relations between physical events, or between physical and mental events, are not really causal at all. While body and mind are different substances, causes (whether mental or physical) are related to their effects by an act of God's intervention on each specific occasion.[45]
+Property dualism
-Supplementary Material
-======================
+Property dualism is the view that the world is constituted of one kind of substance – the physical kind – and there exist two distinct kinds of properties: physical properties and mental properties. It is the view that non-physical, mental properties (such as beliefs, desires and emotions) inhere in some physical bodies (at least, brains). Sub-varieties of property dualism include:
-######
+ Emergent materialism asserts that when matter is organized in the appropriate way (i.e. in the way that living human bodies are organized), mental properties emerge in a way not fully accountable for by physical laws.[5] These emergent properties have an independent ontological status and cannot be reduced to, or explained in terms of, the physical substrate from which they emerge. They are dependent on the physical properties from which they emerge, but opinions vary as to the coherence of top–down causation, i.e. the causal effectiveness of such properties. A form of emergent materialism has been espoused by David Chalmers and the concept has undergone something of a renaissance in recent years,[46] but it was already suggested in the 19th century by William James.
+ Epiphenomenalism is a doctrine first formulated by Thomas Henry Huxley.[47] It consists of the view that mental phenomena are causally ineffectual, where one or more mental states do not have any influence on physical states or mental phenomena are the effects, but not the causes, of physical phenomena. Physical events can cause other physical and mental events, but mental events cannot cause anything since they are just causally inert by-products (i.e. epiphenomena) of the physical world.[43] This view has been defended by Frank Jackson.[48]
+ Non-reductive physicalism is the view that mental properties form a separate ontological class to physical properties: mental states (such as qualia) are not reducible to physical states. The ontological stance towards qualia in the case of non-reductive physicalism does not imply that qualia are causally inert; this is what distinguishes it from epiphenomenalism.
+ Panpsychism is the view that all matter has a mental aspect, or, alternatively, all objects have a unified center of experience or point of view. Superficially, it seems to be a form of property dualism, since it regards everything as having both mental and physical properties. However, some panpsychists say that mechanical behaviour is derived from the primitive mentality of atoms and molecules—as are sophisticated mentality and organic behaviour, the difference being attributed to the presence or absence of complex structure in a compound object. So long as the reduction of non-mental properties to mental ones is in place, panpsychism is not a (strong) form of property dualism; otherwise it is.
-ao0c01566_si_001.pdf
+Dual aspect theory
-Conceptualization, J.Y., H.X., and Q.X.; investigation, J.Y.; supervision and resources, H.X. and Q.X.; Writing-original draft, J.Y. and J.-Y.X.
+Dual aspect theory or dual-aspect monism is the view that the mental and the physical are two aspects of, or perspectives on, the same substance. (Thus it is a mixed position, which is monistic in some respects). In modern philosophical writings, the theory's relationship to neutral monism has become somewhat ill-defined, but one proffered distinction says that whereas neutral monism allows the context of a given group of neutral elements and the relationships into which they enter to determine whether the group can be thought of as mental, physical, both, or neither, dual-aspect theory suggests that the mental and the physical are manifestations (or aspects) of some underlying substance, entity or process that is itself neither mental nor physical as normally understood. Various formulations of dual-aspect monism also require the mental and the physical to be complementary, mutually irreducible and perhaps inseparable (though distinct).[49][50][51]
+Experiential dualism
-The authors declare no competing financial interest.
+This is a philosophy of mind that regards the degrees of freedom between mental and physical well-being as not synonymous thus implying an experiential dualism between body and mind. An example of these disparate degrees of freedom is given by Allan Wallace who notes that it is "experientially apparent that one may be physically uncomfortable—for instance, while engaging in a strenuous physical workout—while mentally cheerful; conversely, one may be mentally distraught while experiencing physical comfort".[52] Experiential dualism notes that our subjective experience of merely seeing something in the physical world seems qualitatively different from mental processes like grief that comes from losing a loved one. This philosophy is a proponent of causal dualism, which is defined as the dual ability for mental states and physical states to affect one another. Mental states can cause changes in physical states and vice versa.
-This work was supported by the Jilin Province Science and Technology Institute of China (No. 20180201078YY).
+However, unlike cartesian dualism or some other systems, experiential dualism does not posit two fundamental substances in reality: mind and matter. Rather, experiential dualism is to be understood as a conceptual framework that gives credence to the qualitative difference between the experience of mental and physical states. Experiential dualism is accepted as the conceptual framework of Madhyamaka Buddhism.
-TC
+Madhayamaka Buddhism goes further, finding fault with the monist view of physicalist philosophies of mind as well in that these generally posit matter and energy as the fundamental substance of reality. Nonetheless, this does not imply that the cartesian dualist view is correct, rather Madhyamaka regards as error any affirming view of a fundamental substance to reality.
-: total cholesterol
+ In denying the independent self-existence of all the phenomena that make up the world of our experience, the Madhyamaka view departs from both the substance dualism of Descartes and the substance monism—namely, physicalism—that is characteristic of modern science. The physicalism propounded by many contemporary scientists seems to assert that the real world is composed of physical things-in-themselves, while all mental phenomena are regarded as mere appearances, devoid of any reality in and of themselves. Much is made of this difference between appearances and reality.[52]
-TG
+Indeed, physicalism, or the idea that matter is the only fundamental substance of reality, is explicitly rejected by Buddhism.
-: triglycerides
+ In the Madhyamaka view, mental events are no more or less real than physical events. In terms of our common-sense experience, differences of kind do exist between physical and mental phenomena. While the former commonly have mass, location, velocity, shape, size, and numerous other physical attributes, these are not generally characteristic of mental phenomena. For example, we do not commonly conceive of the feeling of affection for another person as having mass or location. These physical attributes are no more appropriate to other mental events such as sadness, a recalled image from one's childhood, the visual perception of a rose, or consciousness of any sort. Mental phenomena are, therefore, not regarded as being physical, for the simple reason that they lack many of the attributes that are uniquely characteristic of physical phenomena. Thus, Buddhism has never adopted the physicalist principle that regards only physical things as real.[52]
-HDL
+Monist solutions to the mind–body problem
-: high-density lipoprotein cholesterol
+In contrast to dualism, monism does not accept any fundamental divisions. The fundamentally disparate nature of reality has been central to forms of eastern philosophies for over two millennia. In Indian and Chinese philosophy, monism is integral to how experience is understood. Today, the most common forms of monism in Western philosophy are physicalist.[15] Physicalistic monism asserts that the only existing substance is physical, in some sense of that term to be clarified by our best science.[53] However, a variety of formulations (see below) are possible. Another form of monism, idealism, states that the only existing substance is mental. Although pure idealism, such as that of George Berkeley, is uncommon in contemporary Western philosophy, a more sophisticated variant called panpsychism, according to which mental experience and properties may be at the foundation of physical experience and properties, has been espoused by some philosophers such as Alfred North Whitehead[54] and David Ray Griffin.[46]
-LDL
+Phenomenalism is the theory that representations (or sense data) of external objects are all that exist. Such a view was briefly adopted by Bertrand Russell and many of the logical positivists during the early 20th century.[55] A third possibility is to accept the existence of a basic substance that is neither physical nor mental. The mental and physical would then both be properties of this neutral substance. Such a position was adopted by Baruch Spinoza[6] and was popularized by Ernst Mach[56] in the 19th century. This neutral monism, as it is called, resembles property dualism.
+Physicalistic monisms
+Behaviorism
+Main article: Behaviorism
-: low-density lipoprotein cholesterol
+Behaviorism dominated philosophy of mind for much of the 20th century, especially the first half.[15] In psychology, behaviorism developed as a reaction to the inadequacies of introspectionism.[53] Introspective reports on one's own interior mental life are not subject to careful examination for accuracy and cannot be used to form predictive generalizations. Without generalizability and the possibility of third-person examination, the behaviorists argued, psychology cannot be scientific.[53] The way out, therefore, was to eliminate the idea of an interior mental life (and hence an ontologically independent mind) altogether and focus instead on the description of observable behavior.[57]
-TSP
+Parallel to these developments in psychology, a philosophical behaviorism (sometimes called logical behaviorism) was developed.[53] This is characterized by a strong verificationism, which generally considers unverifiable statements about interior mental life pointless. For the behaviorist, mental states are not interior states on which one can make introspective reports. They are just descriptions of behavior or dispositions to behave in certain ways, made by third parties to explain and predict another's behavior.[58]
-: 3-(tri-methyl-silyl) propionic-2, 2, 3, 3-*d*4 acid sodium salt
+Philosophical behaviorism has fallen out of favor since the latter half of the 20th century, coinciding with the rise of cognitivism.[1]
+Identity theory
+Main article: Type physicalism
-PBS
+Type physicalism (or type-identity theory) was developed by Jack Smart[22] and Ullin Place[59] as a direct reaction to the failure of behaviorism. These philosophers reasoned that, if mental states are something material, but not behavioral, then mental states are probably identical to internal states of the brain. In very simplified terms: a mental state M is nothing other than brain state B. The mental state "desire for a cup of coffee" would thus be nothing more than the "firing of certain neurons in certain brain regions".[22]
+The classic Identity theory and Anomalous Monism in contrast. For the Identity theory, every token instantiation of a single mental type corresponds (as indicated by the arrows) to a physical token of a single physical type. For anomalous monism, the token–token correspondences can fall outside of the type–type correspondences. The result is token identity.
-: phosphate-buffered saline
+On the other hand, even granted the above, it does not follow that identity theories of all types must be abandoned. According to token identity theories, the fact that a certain brain state is connected with only one mental state of a person does not have to mean that there is an absolute correlation between types of mental state and types of brain state. The type–token distinction can be illustrated by a simple example: the word "green" contains four types of letters (g, r, e, n) with two tokens (occurrences) of the letter e along with one each of the others. The idea of token identity is that only particular occurrences of mental events are identical with particular occurrences or tokenings of physical events.[60] Anomalous monism (see below) and most other non-reductive physicalisms are token-identity theories.[61] Despite these problems, there is a renewed interest in the type identity theory today, primarily due to the influence of Jaegwon Kim.[22]
+Functionalism
+Main article: Functionalism (philosophy of mind)
-Chrebp
+Functionalism was formulated by Hilary Putnam and Jerry Fodor as a reaction to the inadequacies of the identity theory.[24] Putnam and Fodor saw mental states in terms of an empirical computational theory of the mind.[62] At about the same time or slightly after, D.M. Armstrong and David Kellogg Lewis formulated a version of functionalism that analyzed the mental concepts of folk psychology in terms of functional roles.[63] Finally, Wittgenstein's idea of meaning as use led to a version of functionalism as a theory of meaning, further developed by Wilfrid Sellars and Gilbert Harman. Another one, psychofunctionalism, is an approach adopted by the naturalistic philosophy of mind associated with Jerry Fodor and Zenon Pylyshyn.
-: carbohydrate-responsive element binding protein
+Mental states are characterized by their causal relations with other mental states and with sensory inputs and behavioral outputs. Functionalism abstracts away from the details of the physical implementation of a mental state by characterizing it in terms of non-mental functional properties. For example, a kidney is characterized scientifically by its functional role in filtering blood and maintaining certain chemical balances.[62]
+Non-reductive physicalism
+Main article: Physicalism
-GK
+Non-reductionist philosophers hold firmly to two essential convictions with regard to mind–body relations: 1) Physicalism is true and mental states must be physical states, but 2) All reductionist proposals are unsatisfactory: mental states cannot be reduced to behavior, brain states or functional states.[53] Hence, the question arises whether there can still be a non-reductive physicalism. Donald Davidson's anomalous monism[23] is an attempt to formulate such a physicalism. He "thinks that when one runs across what are traditionally seen as absurdities of Reason, such as akrasia or self-deception, the personal psychology framework is not to be given up in favor of the subpersonal one, but rather must be enlarged or extended so that the rationality set out by the principle of charity can be found elsewhere."[64]
-: glucokinase
+Davidson uses the thesis of supervenience: mental states supervene on physical states, but are not reducible to them. "Supervenience" therefore describes a functional dependence: there can be no change in the mental without some change in the physical–causal reducibility between the mental and physical without ontological reducibility.[65]
-PK
+Non-reductive physicalism, however, is irreconcilable with self-identity over time [source?]. The brain goes on from one moment of time to another; the brain thus has identity through time. But its states of awareness do not go on from one moment to the next. There is no enduring self – no “I” (capital-I) that goes on from one moment to the next. An analogy of the self or the “I” would be the flame of a candle. The candle and the wick go on from one moment to the next, but the flame does not go on. There is a different flame at each moment of the candle’s burning. The flame displays a type of continuity in that the candle does not go out while it is burning, but there is not really any identity of the flame from one moment to another over time. The scenario is similar on non-reductive physicalism with states of awareness. Every state of the brain at different times has a different state of awareness related to it, but there is no enduring self or “I” from one moment to the next. Similarly, it is an illusion that one is the same individual who walked into class this morning. In fact, one is not the same individual because there is no personal identity over time. If one does exist and one is the same individual who entered into class this morning, then a non-reductive physicalist view of the self should be dismissed.[27]
-: pyruvate kinase
+Because non-reductive physicalist theories attempt to both retain the ontological distinction between mind and body and try to solve the "surfeit of explanations puzzle" in some way; critics often see this as a paradox and point out the similarities to epiphenomenalism, in that it is the brain that is seen as the root "cause" not the mind, and the mind seems to be rendered inert.
-PEPCK
+Epiphenomenalism regards one or more mental states as the byproduct of physical brain states, having no influence on physical states. The interaction is one-way (solving the "surfeit of explanations puzzle") but leaving us with non-reducible mental states (as a byproduct of brain states) – causally reducible, but ontologically irreducible to physical states. Pain would be seen by epiphenomenalists as being caused by the brain state but as not having effects on other brain states, though it might have effects on other mental states (i.e. cause distress).
+Weak emergentism
+Main article: Emergentism
-: phosphoenolpyruvate carboxykinase
+Weak emergentism is a form of "non-reductive physicalism" that involves a layered view of nature, with the layers arranged in terms of increasing complexity and each corresponding to its own special science. Some philosophers[who?] hold that emergent properties causally interact with more fundamental levels, while others maintain that higher-order properties simply supervene over lower levels without direct causal interaction. The latter group therefore holds a less strict, or "weaker", definition of emergentism, which can be rigorously stated as follows: a property P of composite object O is emergent if it is metaphysically impossible for another object to lack property P if that object is composed of parts with intrinsic properties identical to those in O and has those parts in an identical configuration.[citation needed]
-PC
+Sometimes emergentists use the example of water having a new property when Hydrogen H and Oxygen O combine to form H2O (water). In this example there "emerges" a new property of a transparent liquid that would not have been predicted by understanding hydrogen and oxygen as gases. This is analogous to physical properties of the brain giving rise to a mental state. Emergentists try to solve the notorious mind–body gap this way. One problem for emergentism is the idea of causal closure in the world that does not allow for a mind-to-body causation.[66]
+Eliminative materialism
+Main article: Eliminative materialism
-: pyruvate carboxylase
+If one is a materialist and believes that all aspects of our common-sense psychology will find reduction to a mature cognitive neuroscience, and that non-reductive materialism is mistaken, then one can adopt a final, more radical position: eliminative materialism.
-FBPase
+There are several varieties of eliminative materialism, but all maintain that our common-sense "folk psychology" badly misrepresents the nature of some aspect of cognition. Eliminativists such as Patricia and Paul Churchland argue that while folk psychology treats cognition as fundamentally sentence-like, the non-linguistic vector/matrix model of neural network theory or connectionism will prove to be a much more accurate account of how the brain works.[20]
-: fructose-1,6-bisphosphatase
+The Churchlands often invoke the fate of other, erroneous popular theories and ontologies that have arisen in the course of history.[20][21] For example, Ptolemaic astronomy served to explain and roughly predict the motions of the planets for centuries, but eventually this model of the solar system was eliminated in favor of the Copernican model. The Churchlands believe the same eliminative fate awaits the "sentence-cruncher" model of the mind in which thought and behavior are the result of manipulating sentence-like states called "propositional attitudes". Sociologist Jacy Reese Anthis argues for eliminative materialism on all faculties of mind, including consciousness, stating, "The deepest mysteries of the mind are within our reach."[67]
+Mysterianism
+Main article: New mysterianism
-G6Pase
+Some philosophers take an epistemic approach and argue that the mind–body problem is currently unsolvable, and perhaps will always remain unsolvable to human beings. This is usually termed New mysterianism. Colin McGinn holds that human beings are cognitively closed in regards to their own minds. According to McGinn human minds lack the concept-forming procedures to fully grasp how mental properties such as consciousness arise from their causal basis.[68] An example would be how an elephant is cognitively closed in regards to particle physics.
-: glucose-6-phosphatase
+A more moderate conception has been expounded by Thomas Nagel, which holds that the mind–body problem is currently unsolvable at the present stage of scientific development and that it might take a future scientific paradigm shift or revolution to bridge the explanatory gap. Nagel posits that in the future a sort of "objective phenomenology" might be able to bridge the gap between subjective conscious experience and its physical basis.[69]
+Linguistic criticism of the mind–body problem
-Ppar-γ
+Each attempt to answer the mind–body problem encounters substantial problems. Some philosophers argue that this is because there is an underlying conceptual confusion.[70] These philosophers, such as Ludwig Wittgenstein and his followers in the tradition of linguistic criticism, therefore reject the problem as illusory.[71] They argue that it is an error to ask how mental and biological states fit together. Rather it should simply be accepted that human experience can be described in different ways—for instance, in a mental and in a biological vocabulary. Illusory problems arise if one tries to describe the one in terms of the other's vocabulary or if the mental vocabulary is used in the wrong contexts.[71] This is the case, for instance, if one searches for mental states of the brain. The brain is simply the wrong context for the use of mental vocabulary—the search for mental states of the brain is therefore a category error or a sort of fallacy of reasoning.[71]
-: peroxisome proliferator-activated recepto γ
+Today, such a position is often adopted by interpreters of Wittgenstein such as Peter Hacker.[70] However, Hilary Putnam, the originator of functionalism, has also adopted the position that the mind–body problem is an illusory problem which should be dissolved according to the manner of Wittgenstein.[72]
+Naturalism and its problems
-Srebp1c
+The thesis of physicalism is that the mind is part of the material (or physical) world. Such a position faces the problem that the mind has certain properties that no other material thing seems to possess. Physicalism must therefore explain how it is possible that these properties can nonetheless emerge from a material thing. The project of providing such an explanation is often referred to as the "naturalization of the mental".[53] Some of the crucial problems that this project attempts to resolve include the existence of qualia and the nature of intentionality.[53]
+Qualia
+Main article: Qualia
-: sterol regulatory element binding protein-1c
+Many mental states seem to be experienced subjectively in different ways by different individuals.[32] And it is characteristic of a mental state that it has some experiential quality, e.g. of pain, that it hurts. However, the sensation of pain between two individuals may not be identical, since no one has a perfect way to measure how much something hurts or of describing exactly how it feels to hurt. Philosophers and scientists therefore ask where these experiences come from. The existence of cerebral events, in and of themselves, cannot explain why they are accompanied by these corresponding qualitative experiences. The puzzle of why many cerebral processes occur with an accompanying experiential aspect in consciousness seems impossible to explain.[31]
-Fas
+Yet it also seems to many that science will eventually have to explain such experiences.[53] This follows from an assumption about the possibility of reductive explanations. According to this view, if an attempt can be successfully made to explain a phenomenon reductively (e.g., water), then it can be explained why the phenomenon has all of its properties (e.g., fluidity, transparency).[53] In the case of mental states, this means that there needs to be an explanation of why they have the property of being experienced in a certain way.
-: fatty acid synthase
+The 20th-century German philosopher Martin Heidegger criticized the ontological assumptions underpinning such a reductive model, and claimed that it was impossible to make sense of experience in these terms. This is because, according to Heidegger, the nature of our subjective experience and its qualities is impossible to understand in terms of Cartesian "substances" that bear "properties". Another way to put this is that the very concept of qualitative experience is incoherent in terms of—or is semantically incommensurable with the concept of—substances that bear properties.[73]
-Acl
+This problem of explaining introspective first-person aspects of mental states and consciousness in general in terms of third-person quantitative neuroscience is called the explanatory gap.[74] There are several different views of the nature of this gap among contemporary philosophers of mind. David Chalmers and the early Frank Jackson interpret the gap as ontological in nature; that is, they maintain that qualia can never be explained by science because physicalism is false. There are two separate categories involved and one cannot be reduced to the other.[75] An alternative view is taken by philosophers such as Thomas Nagel and Colin McGinn. According to them, the gap is epistemological in nature. For Nagel, science is not yet able to explain subjective experience because it has not yet arrived at the level or kind of knowledge that is required. We are not even able to formulate the problem coherently.[32] For McGinn, on other hand, the problem is one of permanent and inherent biological limitations. We are not able to resolve the explanatory gap because the realm of subjective experiences is cognitively closed to us in the same manner that quantum physics is cognitively closed to elephants.[76] Other philosophers liquidate the gap as purely a semantic problem. This semantic problem, of course, led to the famous "Qualia Question", which is: Does Red cause Redness?
+Intentionality
+Main article: Intentionality
+John Searle—one of the most influential philosophers of mind, proponent of biological naturalism (Berkeley 2002)
-: ATP-citrate lyase
+Intentionality is the capacity of mental states to be directed towards (about) or be in relation with something in the external world.[26] This property of mental states entails that they have contents and semantic referents and can therefore be assigned truth values. When one tries to reduce these states to natural processes there arises a problem: natural processes are not true or false, they simply happen.[77] It would not make any sense to say that a natural process is true or false. But mental ideas or judgments are true or false, so how then can mental states (ideas or judgments) be natural processes? The possibility of assigning semantic value to ideas must mean that such ideas are about facts. Thus, for example, the idea that Herodotus was a historian refers to Herodotus and to the fact that he was a historian. If the fact is true, then the idea is true; otherwise, it is false. But where does this relation come from? In the brain, there are only electrochemical processes and these seem not to have anything to do with Herodotus.[25]
+Philosophy of perception
+Main article: Philosophy of perception
-Scd1
+Philosophy of perception is concerned with the nature of perceptual experience and the status of perceptual objects, in particular how perceptual experience relates to appearances and beliefs about the world. The main contemporary views within philosophy of perception include naive realism, enactivism and representational views.[2][3][78]
+A phrenological mapping of the brain – phrenology was among the first attempts to correlate mental functions with specific parts of the brain although it is now widely discredited.
+Philosophy of mind and science
-: stearoyl-CoA desaturase 1
+Humans are corporeal beings and, as such, they are subject to examination and description by the natural sciences. Since mental processes are intimately related to bodily processes (e.g., embodied cognition theory of mind), the descriptions that the natural sciences furnish of human beings play an important role in the philosophy of mind.[1] There are many scientific disciplines that study processes related to the mental. The list of such sciences includes: biology, computer science, cognitive science, cybernetics, linguistics, medicine, pharmacology, and psychology.[79]
+Neurobiology
+Main article: Neuroscience
-Acc
+The theoretical background of biology, as is the case with modern natural sciences in general, is fundamentally materialistic. The objects of study are, in the first place, physical processes, which are considered to be the foundations of mental activity and behavior.[80] The increasing success of biology in the explanation of mental phenomena can be seen by the absence of any empirical refutation of its fundamental presupposition: "there can be no change in the mental states of a person without a change in brain states."[79]
-: acetyl-CoA carboxylase
+Within the field of neurobiology, there are many subdisciplines that are concerned with the relations between mental and physical states and processes:[80] Sensory neurophysiology investigates the relation between the processes of perception and stimulation.[81] Cognitive neuroscience studies the correlations between mental processes and neural processes.[81] Neuropsychology describes the dependence of mental faculties on specific anatomical regions of the brain.[81] Lastly, evolutionary biology studies the origins and development of the human nervous system and, in as much as this is the basis of the mind, also describes the ontogenetic and phylogenetic development of mental phenomena beginning from their most primitive stages.[79] Evolutionary biology furthermore places tight constraints on any philosophical theory of the mind, as the gene-based mechanism of natural selection does not allow any giant leaps in the development of neural complexity or neural software but only incremental steps over long time periods.[82]
+Since the 1980s, sophisticated neuroimaging procedures, such as fMRI (above), have furnished increasing knowledge about the workings of the human brain, shedding light on ancient philosophical problems.
-Acox
+The methodological breakthroughs of the neurosciences, in particular the introduction of high-tech neuroimaging procedures, has propelled scientists toward the elaboration of increasingly ambitious research programs: one of the main goals is to describe and comprehend the neural processes which correspond to mental functions (see: neural correlate).[80] Several groups are inspired by these advances.
+Computer science
+Main article: Computer science
-: acyl-CoA oxidase
+Computer science concerns itself with the automatic processing of information (or at least with physical systems of symbols to which information is assigned) by means of such things as computers.[83] From the beginning, computer programmers have been able to develop programs that permit computers to carry out tasks for which organic beings need a mind. A simple example is multiplication. It is not clear whether computers could be said to have a mind. Could they, someday, come to have what we call a mind? This question has been propelled into the forefront of much philosophical debate because of investigations in the field of artificial intelligence (AI).
-Ppar-α
+Within AI, it is common to distinguish between a modest research program and a more ambitious one: this distinction was coined by John Searle in terms of a weak AI and strong AI. The exclusive objective of "weak AI", according to Searle, is the successful simulation of mental states, with no attempt to make computers become conscious or aware, etc. The objective of strong AI, on the contrary, is a computer with consciousness similar to that of human beings.[84] The program of strong AI goes back to one of the pioneers of computation Alan Turing. As an answer to the question "Can computers think?", he formulated the famous Turing test.[85] Turing believed that a computer could be said to "think" when, if placed in a room by itself next to another room that contained a human being and with the same questions being asked of both the computer and the human being by a third party human being, the computer's responses turned out to be indistinguishable from those of the human. Essentially, Turing's view of machine intelligence followed the behaviourist model of the mind—intelligence is as intelligence does. The Turing test has received many criticisms, among which the most famous is probably the Chinese room thought experiment formulated by Searle.[84]
-: peroxisome proliferator-activated recepto α
+The question about the possible sensitivity (qualia) of computers or robots still remains open. Some computer scientists believe that the specialty of AI can still make new contributions to the resolution of the "mind–body problem". They suggest that based on the reciprocal influences between software and hardware that takes place in all computers, it is possible that someday theories can be discovered that help us to understand the reciprocal influences between the human mind and the brain (wetware).[86]
+Psychology
+Main article: Psychology
-Cpt1
+Psychology is the science that investigates mental states directly. It uses generally empirical methods to investigate concrete mental states like joy, fear or obsessions. Psychology investigates the laws that bind these mental states to each other or with inputs and outputs to the human organism.[87]
-: carnitine palmitoyltransferase I
+An example of this is the psychology of perception. Scientists working in this field have discovered general principles of the perception of forms. A law of the psychology of forms says that objects that move in the same direction are perceived as related to each other.[79] This law describes a relation between visual input and mental perceptual states. However, it does not suggest anything about the nature of perceptual states. The laws discovered by psychology are compatible with all the answers to the mind–body problem already described.
+Cognitive science
-Mcad
+Cognitive science is the interdisciplinary scientific study of the mind and its processes. It examines what cognition is, what it does, and how it works. It includes research on intelligence and behavior, especially focusing on how information is represented, processed, and transformed (in faculties such as perception, language, memory, reasoning, and emotion) within nervous systems (human or other animals) and machines (e.g. computers). Cognitive science consists of multiple research disciplines, including psychology, artificial intelligence, philosophy, neuroscience, linguistics, anthropology, sociology, and education.[88] It spans many levels of analysis, from low-level learning and decision mechanisms to high-level logic and planning; from neural circuitry to modular brain organization. Over the years, cognitive science has evolved from a representational and information processing approach to explaining the mind to embrace an embodied perspective of it. Accordingly, bodily processes play a significant role in the acquisition, development, and shaping of cognitive capabilities.[89] For instance, Rowlands (2012) argues that cognition is enactive, embodied, embedded, affective and (potentially) extended. The position is taken that the "classical sandwich" of cognition sandwiched between perception and action is artificial; cognition has to be seen as a product of a strongly coupled interaction that cannot be divided this way.[90][91]
+Near-death research
+Main article: Near-death studies
-: medium-chain acyl-CoA dehydrogenase
+In the field of near-death research, the following phenomenon, among others, occurs: For example, during some brain operations the brain is artificially and measurably deactivated. Nevertheless, some patients report during this phase that they have perceived what is happening in their surroundings, i.e. that they have had consciousness. Patients also report experiences during a cardiac arrest. There is the following problem: As soon as the brain is no longer supplied with blood and thus with oxygen after a cardiac arrest, the brain ceases its normal operation after about 15 seconds, i.e. the brain falls into a state of unconsciousness.[92]
+Philosophy of mind in the continental tradition
-Dgat1
+Most of the discussion in this article has focused on one style or tradition of philosophy in modern Western culture, usually called analytic philosophy (sometimes described as Anglo-American philosophy).[93] Many other schools of thought exist, however, which are sometimes subsumed under the broad (and vague) label of continental philosophy.[93] In any case, though topics and methods here are numerous, in relation to the philosophy of mind the various schools that fall under this label (phenomenology, existentialism, etc.) can globally be seen to differ from the analytic school in that they focus less on language and logical analysis alone but also take in other forms of understanding human existence and experience. With reference specifically to the discussion of the mind, this tends to translate into attempts to grasp the concepts of thought and perceptual experience in some sense that does not merely involve the analysis of linguistic forms.[93]
-: diacylglycerol acyltransferase 1
+Immanuel Kant's Critique of Pure Reason, first published in 1781 and presented again with major revisions in 1787, represents a significant intervention into what will later become known as the philosophy of mind. Kant's first critique is generally recognized as among the most significant works of modern philosophy in the West. Kant is a figure whose influence is marked in both continental and analytic/Anglo-American philosophy. Kant's work develops an in-depth study of transcendental consciousness, or the life of the mind as conceived through the universal categories of understanding.
-Dgat2
+In Georg Wilhelm Friedrich Hegel's Philosophy of Mind (frequently translated as Philosophy of Spirit or Geist),[94] the third part of his Encyclopedia of the Philosophical Sciences, Hegel discusses three distinct types of mind: the "subjective mind/spirit", the mind of an individual; the "objective mind/spirit", the mind of society and of the State; and the "Absolute mind/spirit", the position of religion, art, and philosophy. See also Hegel's The Phenomenology of Spirit. Nonetheless, Hegel's work differs radically from the style of Anglo-American philosophy of mind.
-: diacylglycerol acyltransferase 2
+In 1896, Henri Bergson made in Matter and Memory "Essay on the relation of body and spirit" a forceful case for the ontological difference of body and mind by reducing the problem to the more definite one of memory, thus allowing for a solution built on the empirical test case of aphasia.
-Gpat
+In modern times, the two main schools that have developed in response or opposition to this Hegelian tradition are phenomenology and existentialism. Phenomenology, founded by Edmund Husserl, focuses on the contents of the human mind (see noema) and how processes shape our experiences.[95] Existentialism, a school of thought founded upon the work of Søren Kierkegaard, focuses on Human predicament and how people deal with the situation of being alive. Existential-phenomenology represents a major branch of continental philosophy (they are not contradictory), rooted in the work of Husserl but expressed in its fullest forms in the work of Martin Heidegger, Jean-Paul Sartre, Simone de Beauvoir and Maurice Merleau-Ponty. See Heidegger's Being and Time, Merleau-Ponty's Phenomenology of Perception, Sartre's Being and Nothingness, and Simone de Beauvoir's The Second Sex.
+Topics related to philosophy of mind
-: glycerol-3-phosphate acyltransferase
+There are countless subjects that are affected by the ideas developed in the philosophy of mind. Clear examples of this are the nature of death and its definitive character, the nature of emotion, of perception and of memory. Questions about what a person is and what his or her identity have to do with the philosophy of mind. There are two subjects that, in connection with the philosophy of the mind, have aroused special attention: free will and the self.[1]
+Free will
+Main article: Free will
-VIP
+In the context of philosophy of mind, the problem of free will takes on renewed intensity. This is the case for materialistic determinists.[1] According to this position, natural laws completely determine the course of the material world. Mental states, and therefore the will as well, would be material states, which means human behavior and decisions would be completely determined by natural laws. Some take this reasoning a step further: people cannot determine by themselves what they want and what they do. Consequently, they are not free.[96]
-: variable importance of projection
+This argumentation is rejected, on the one hand, by the compatibilists. Those who adopt this position suggest that the question "Are we free?" can only be answered once we have determined what the term "free" means. The opposite of "free" is not "caused" but "compelled" or "coerced". It is not appropriate to identify freedom with indetermination. A free act is one where the agent could have done otherwise if it had chosen otherwise. In this sense a person can be free even though determinism is true.[96] The most important compatibilist in the history of the philosophy was David Hume.[97] More recently, this position is defended, for example, by Daniel Dennett.[98]
-OPLS-DA
+On the other hand, there are also many incompatibilists who reject the argument because they believe that the will is free in a stronger sense called libertarianism.[96] These philosophers affirm the course of the world is either a) not completely determined by natural law where natural law is intercepted by physically independent agency,[99] b) determined by indeterministic natural law only, or c) determined by indeterministic natural law in line with the subjective effort of physically non-reducible agency.[100] Under Libertarianism, the will does not have to be deterministic and, therefore, it is potentially free. Critics of the second proposition (b) accuse the incompatibilists of using an incoherent concept of freedom. They argue as follows: if our will is not determined by anything, then we desire what we desire by pure chance. And if what we desire is purely accidental, we are not free. So if our will is not determined by anything, we are not free.[96]
+Self
+Main article: Philosophy of self
-: orthogonal partial least-squares discriminant analysis
+The philosophy of mind also has important consequences for the concept of "self". If by "self" or "I" one refers to an essential, immutable nucleus of the person, some modern philosophers of mind, such as Daniel Dennett believe that no such thing exists. According to Dennett and other contemporaries, the self is considered an illusion.[101] The idea of a self as an immutable essential nucleus derives from the idea of an immaterial soul. Such an idea is unacceptable to modern philosophers with physicalist orientations and their general skepticism of the concept of "self" as postulated by David Hume, who could never catch himself not doing, thinking or feeling anything.[102] However, in the light of empirical results from developmental psychology, developmental biology and neuroscience, the idea of an essential inconstant, material nucleus—an integrated representational system distributed over changing patterns of synaptic connections—seems reasonable.[103]
-CoA
-: coenzyme A
-SCFA
+How is a sovereign state defined?
-: short-chain fatty acids
+A sovereign state is an entity with a permanent population, a defined territory, an effective government, and the capacity to conduct international relations. These criteria are often loosely applied. For example, boundary disputes and ongoing civil wars do not necessarily prevent an entity from becoming a state if it is formally independent from other states.
+Does a state need to get recognition from other states?
-Description
+No, a state technically does not need to get recognition from other states. Under the prevailing declaratory theory of recognition, a state exists if it meets the necessary criteria that define states. Recognition is simply an acknowledgment of an existing situation. (The minority constitutive theory of recognition holds that recognition is necessary to the existence of a state.)
+When can a state use military force against another state?
-Foreign trailer for Gokusen.
+A state can use military force against another state only in self-defense against an armed attack. This right arises from Article 51 of the United Nations Charter, which incorporates inherent rights from customary international law. Any acts of self-defense must be necessary and proportionate to the acts of aggression. Acts of anticipatory self-defense may be permitted when an armed attack is imminent and inevitable, although the UN Charter does not address this situation.
+What does international humanitarian law do?
-After seven years of enduring popularity on television, Gokusen, finally makes its silver screen debut. Winning over the hearts of millions of viewers and becoming a national heroine, Yukie Nakama reprises her role as Kumiko Yamaguchi, a.k.a Yankumi. Wearing jerseys, glasses and pigtails, the dowdy high school instructor becomes the homeroom teacher for the wild delinquents of Class 3D. At first glance, Kumiko seems like she can be easily intimidated, but much to everyone's surprise, she remains unfazed by her students' shenanigans. Her courage and discipline comes from being raised by a family who also happens to be a feared yakuza clan. With her strong sense of justice and her fierce brawling abilities, Kumiko follows her principles and upholds honor to solve the problems that trouble her students.
----
-abstract: |
- We design a new, fast algorithm for agnostically learning univariate probability distributions whose densities are well approximated by piecewise polynomial functions. Let $f$ be the density function of an arbitrary univariate distribution, and suppose that $f$ is $\OPT$ close in $L_1$-distance to an unknown piecewise polynomial function with $t$ interval pieces and degree $\pdeg$. Our algorithm draws $n = O(t(\pdeg+1)/\eps^2)$ samples from $f$, runs in time $\Otilde (n \cdot \poly (\pdeg))$, and with probability at least $9/10$ outputs an $O(t)$-piecewise degree-$\pdeg$ hypothesis $h$ that is $4 \cdot \OPT +\eps$ close to $f$.
+International humanitarian law restricts the ways in which wars can be conducted. It protects the safety of non-combatants, as well as former combatants like prisoners of war. It also bans the use of certain weapons or tactics that inflict unnecessary harm or suffering, cause severe or lasting harm to the environment, or cannot be used in a way that allows those using them to distinguish between combatant and non-combatant targets.
+What are some of the human rights guaranteed by international law?
- Our general algorithm yields (nearly) sample-optimal and [*nearly-linear time*]{} estimators for a wide range of structured distribution families over both continuous and discrete domains in a unified way. For most of our applications, these are the [*first*]{} sample-optimal and nearly-linear time estimators in the literature. As a consequence, our work resolves the sample and computational complexities of a broad class of inference tasks via a single “meta-algorithm”. Moreover, we experimentally demonstrate that our algorithm performs very well in practice.
+Human rights guaranteed by international law include civil, political, economic, social, and cultural rights. Examples include freedom of expression, freedom of religion, freedom of association, the right to an adequate standard of living, the right to work in favorable conditions, the right to education, and protections against arbitrary arrest and detention. These rights are codified in the Universal Declaration of Human Rights and other United Nations instruments, known collectively as the International Bill of Human Rights.
+What is the concept of sustainable development?
- Our algorithm consists of three “levels”: (i) At the top level, we employ an iterative greedy algorithm for finding a good partition of the real line into the pieces of a piecewise polynomial. (ii) For each piece, we show that the sub-problem of finding a good polynomial fit on the current interval can be solved efficiently with a separation oracle method. (iii) We reduce the task of finding a separating hyperplane to a combinatorial problem and give an efficient algorithm for this problem. Combining these three procedures gives a density estimation algorithm with the claimed guarantees.
-author:
-- |
- Jayadev Acharya[^1]\
- EECS, MIT\
-- |
- Ilias Diakonikolas[^2]\
- Informatics, U. of Edinburgh\
-- |
- Jerry Li[^3]\
- EECS, MIT\
-- |
- Ludwig Schmidt[^4]\
- EECS, MIT\
-bibliography:
-- 'allrefs.bib'
-title: 'Sample-Optimal Density Estimation in Nearly-Linear Time'
----
+Sustainable development is defined as meeting the present needs of a generation without preventing future generations from meeting their needs. It has been a guiding principle of international environmental law since the Earth Summit in Rio de Janeiro in 1992, and it even has influenced economic treaties. However, sustainable development has not yet been achieved, despite some legal and political progress.
+What are the main organs of the United Nations?
-Appendix {#appendix .unnumbered}
-========
+The main organs of the United Nations are the General Assembly, the Security Council, the Secretariat, the International Court of Justice, the Economic and Social Council, and the Trusteeship Council. The General Assembly is a representative policy-making organ in which member states vote on resolutions and other actions. The Security Council protects international peace and security, approves changes to the UN Charter, and recommends new UN member states. Led by the UN Secretary-General, the Secretariat carries out the mandates of the General Assembly and other UN organs. The International Court of Justice resolves disputes between states and issues advisory opinions to non-state organizations. The Economic and Social Council develops policy recommendations based on meetings and consultations. The Trusteeship Council has been inactive since the 1990s, when the last UN Trust Territory gained independence.
+Which cases are heard by the International Court of Justice?
-[^1]: Supported by a grant from the MIT-Shell Energy Initiative.
+The International Court of Justice has contentious jurisdiction and advisory jurisdiction. Its contentious jurisdiction involves resolving disputes between states under international law. Each state involved in a dispute must consent to ICJ jurisdiction. While contentious jurisdiction leads to binding decisions, advisory jurisdiction involves issuing non-binding opinions to public international organizations. These opinions generally carry great weight and can resolve ambiguities in international law.
+How are treaties different from executive agreements under US law?
-[^2]: Supported by a Marie Curie CIG, EPSRC grant EP/L021749/1 and a SICSA grant.
+A treaty requires the advice and consent of two-thirds of the Senate, and it must be ratified by the President. An executive agreement can be negotiated by the President without the advice and consent of two-thirds of the Senate. In a congressional-executive agreement, the President gets the approval of a simple majority of both houses of Congress. In a sole executive agreement, the President acts without involving Congress. However, treaties and executive agreements are equally binding under international law.
+When does a treaty supersede federal laws?
-[^3]: Supported by NSF grant CCF-1217921 and DOE grant DE-SC0008923.
+A treaty supersedes prior inconsistent federal laws if Congress implements it through new federal laws or if it is self-executing. A treaty is self-executing if there is an intent to make it enforceable under US law without additional implementing legislation. Some provisions in a treaty may be self-executing even if other provisions are not. Specific provisions are more likely to be considered self-executing. A provision may be self-executing in the US even if it is not self-executing in other signatory nations.
-[^4]: Supported by MADALGO and a grant from the MIT-Shell Energy Initiative.
-Extra-anatomic aortic bypass for complex (re-) coarctation and hypoplastic aortic arch in adolescents and adults.
-Various surgical approaches have been proposed for complex (re-) coarctation and aortic arch hypoplasia (AAH). We report seven patients (mean age 19.6+/-9.5 years) with complex coarctation or re-coarctation and AAH successfully treated by extra-anatomic ascending-to-descending aortic bypass (ADB) via sternotomy between 1995 and 2002 without mortality and no relevant complication early postoperatively and during a follow-up of 24+/-29 (0.2-84) months. ADB may therefore be considered in selected patients with (re-) coarctation with AAH, with the need for concomitant ascending aortic or cardiac surgery and in patients with aortic arch stenosis and increased risk of complications under DHCA.
-This invention generally relates to the formation of gas tight pressure blocks in multiple wire or conductor electric cables such as telephone cables to enable air pressurization of sections of such cables. In particular, this invention is useful in maintaining fluid pressure in the pressure block forming compound during multiple injections at a single site on a cable during in-field service or installation.
-U.S. Pat. No. 3,823,250, the disclosure of which is incorporated herein by reference, discloses a tap fitting suitable for use with the valve hereinafter described. Briefly, the tap fitting comprises a curved base sheet for placement over an opening cut in the sheath of the cable and an injection port integrally formed with and projecting from the sheet, the port including means for forming a pressure tight covering, such as threads about the mouth of the port.
-As is well known in the art, air pressurization of sections of electric and telephone cables prevents the seepage of water or moisture into the cable and the resulting noise and interference in communication and power circuits. Pressure blocks forming dams at intermittent points over the length of the cables are provided by injecting a self-setting liquid compound which hardens and fills the space around the wires over a sufficient length to hold the air pressure. To form such a pressure block it is necessary to make an opening in the cable sheathing leading to the interior and then to provide and exteriorly positioned fitting through which the liquid block forming compound may be injected. To accomplish this, a fluid injector is used. Typically the fluid injector comprises a chamber containing a discrete amount of block forming compound, a pressurizing plunger operative in the chamber, and a nozzle in fluid communication with the chamber through which the fluid is ejected in response to the compression movement of the plunger operating on the compound. The fluid compound is injected into the interior of the cable by threading the nozzle of the fluid injector to the tap fitting and compressing the plunger.
-Where a large amount of compound is needed to fill the cable interior to the desired extent, i.e., more than the amount normally contained within the injector chamber, the continuous injection operation must be interrupted so that the injector chamber can be refilled or recharged. To recharge the fluid injector in the midst of the injection operation, the pressure on the plunger of the fluid injector is released and the plunger is withdrawn to permit access to the injector chamber for refilling with the compound.
-Recharging in the midst of the cable filling for block forming operation presents a number of drawbacks. Due to residual pressure in the cable, some of the liquid compound escapes through the tap fitting and pressure interior of the cable is normally lost. To overcome these problems, stop valves have been devised to be interposed between the fluid injector and the cable interior. Such stop valves permit injection of fluid through a fitting into the cable interior while opposing the escape of the pressurized fluid compound therefrom. The 3M Company of Minneapolis, Minn., for example, markets a resin pressure splicing system under the trademark "SCOTCHCAST Brand R.P.S." The 3M system includes a one-way valve that opens to permit the injection of the blocking compound and closes under the residual back pressure to prevent the escape of the blocking compound.
-Such prior art valves have considerable drawbacks, particularly where the nozzle of the fluid injector is adapted to sealably couple with a conduit (which includes the valve) into the cable interior. For example, due to the pressure seal between the injection nozzle and the valve, it is difficult to release the plunger of the fluid injector, since any attempt to do so creates a vacuum in the interior of the fluid injector. This makes it difficult to recharge the fluid injector while it is in place on the tap fitting.
-/*
- * Copyright 2000-2009 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+Recognition of States
-package com.intellij.refactoring.safeDelete.usageInfo;
+The process in which a state acknowledges another entity as a state is known as recognition. This can involve an overt statement or an action that implies an intent to recognize the entity as a state. Each state can make its own decision about whether recognition is appropriate, which can carry significant political weight. For example, recognition is usually required to establish sovereign and diplomatic immunities.
-import com.intellij.util.IncorrectOperationException;
+International law contains two theories of recognition. The constitutive theory of recognition holds that a state does not exist until it receives recognition. By contrast, the declaratory theory of recognition holds that a state exists without recognition, which is merely an acknowledgment of an existing situation. The declaratory theory has become the prevailing view. That said, an entity likely has a stronger claim to statehood when it has received recognition from many other states. This is especially true if questions surround its ability to meet the criteria under the Montevideo Convention.
-/**
- * @author yole
- */
-public interface SafeDeleteCustomUsageInfo {
- void performRefactoring() throws IncorrectOperationException;
-}
+Non-Recognition and Qualified Recognition
-Why isn't climate change keeping more Senators up tonight?
+Statehood does not rely on recognition, but sometimes a state may have a duty to refrain from recognizing another state or an alteration to a state. This situation usually arises when the state or altered state arose from illegitimate military actions, violations of human rights, or other clear infringements of international norms. The United Nations Security Council often sets an example for states on this issue. For example, it nullified the annexation of Kuwait by Iraq during the period preceding the Gulf War of 1991.
-All-nighters are usually the result of not doing your homework, but this evening twenty-eight United States senators will be up for pretty much the opposite reason. Having read the latest science on climate change, they will be making speeches through the night to call for comprehensive action to meet this threat.
+In other cases, a state may not recognize an entity that meets the baseline criteria for statehood until it meets specific additional requirements. For example, states formed during the dissolution of the Soviet Union did not receive recognition from the European Community (the precursor to the European Union) until they committed to nuclear non-proliferation, minority rights, and respect for borders.
-It’s an unusual tactic, but the real question isn’t why are twenty-eight of them talking all night, but why the other seventy-two senators are sleeping when we’re facing such a serious challenge. All the major American scientific organization have been warning us about the reality and seriousness of climate change for years. And while it may be happening slowly, that won’t make it any less expensive or devastating. If taxpayers liked paying for damage from Hurricane Sandy, or the droughts and wildfires in the West and Midwest, they’re going to have a ball as the impacts get stronger in the years to come.
+The Solar System[c] is the gravitationally bound system of the Sun and the objects that orbit it. The largest of these objects are the eight planets, which in order from the Sun are four terrestrial planets (Mercury, Venus, Earth and Mars); two gas giants (Jupiter and Saturn); and two ice giants (Uranus and Neptune). The Solar System formed 4.6 billion years ago from the gravitational collapse of a giant interstellar molecular cloud.
-So why are the Sleeping 72 ignoring this severe threat to our economy and our environment?
+All four terrestrial planets belong to the inner Solar System (≤ 1.7 AU) and have a solid surface. Inversely, all four giant planets belong to the outer Solar System (≤ 30.5 AU) and do not have a definite surface, as they are mainly composed of gases and liquids. 99.86% of the Solar System's mass is in the Sun and nearly 90% of the remaining mass are in Jupiter and Saturn. There is a strong consensus among astronomers that the Solar System also has nine dwarf planets, which consist of one asteroid-belt object – Ceres; five Kuiper-belt objects – Pluto, Orcus, Haumea, Quaoar, and Makemake; and three scattered-disc objects – Gonggong, Eris, and Sedna.
-It’s not that endorsing the science of climate change is unpopular in this country. 69% of Americans believe there is “solid evidence” the climate is changing (Pew, 2013). But as is almost always the case, members of Congress care a lot less about what Americans in general think than about what the voters of their state or district think. Even more specifically, that means being wary about taking position that might alienate the core supporters of your party, or ‘gettable’ moderates.
+There are a vast number of smaller objects orbiting the Sun, called small Solar System bodies. This category includes asteroids, comets, centaurs, meteoroids and interplanetary dust clouds. Many of these objects are in the asteroid belt between the orbits of Mars and Jupiter (1.5–4.5 astronomical units, AU), and the Kuiper belt just outside Neptune's orbit (30–50 AU).[d] Six of the major planets, the six largest possible dwarf planets, and many of the smaller bodies are orbited by natural satellites, commonly called "moons" after Earth's Moon. Two natural satellites, Jupiter's moon Ganymede and Saturn's moon Titan, are larger than Mercury, the smallest terrestrial planet, though they are less massive.
-As a result, many House members from solidly conservative districts, and Senators from swing states, are afraid to step out on an issue like climate change. Never mind that prudent action now will save their constituents money in the long run, and protect future generations from devastating storms, droughts, and health effects. If the politics look worrisome, they’d rather get a good night’s sleep tonight.
+The Sun's stream of charged particles creates the heliosphere, which terminates where the pressure of the solar wind is equal to the surrounding interstellar medium, forming a boundary called the heliopause. The outermost region of the Solar System is the Oort cloud (from 2,000 to 50,000–200,000 AU), the source for long-period comets. The Solar System, which ends at the Sun's sphere of gravitational influence (50,000–200,000 AU), is embedded in the Local Cloud of the interstellar medium and orbits the Galactic Center. The closest star to the Solar System, Proxima Centauri, is 4.25 light years away.
+Formation and evolution
+Main article: Formation and evolution of the Solar System
-But the funny thing about politics is that we often get it wrong. Like in sports, sometimes the worst thing you can do is play not to lose – avoid risks to nurse a lead, hoping it will hold up. Clearly, there are a lot incumbents who have calculated that denying the obvious truth of climate science will protect them from unnecessary political risk. But, in the long run, that could be a losing political strategy. 80% of voters under 35 want action to address climate change. More importantly to politicians who are afraid of the issue, 56% of younger voters who don’tgenerally approveof President Obama’s job performance support action (GS Strategy Group, Benenson Strategy Group, 2013). And it’s not just the long run. Even in 2014, before that demographic wave washes over us, signalling a sensible position on climate change (it’s real, we should act prudently) is a great way to signal moderation to swing voters.
+The Solar System formed 4.568 billion years ago from the gravitational collapse of a region within a large molecular cloud.[e] This initial cloud was likely several light-years across and probably birthed several stars.[5] As is typical of molecular clouds, this one consisted mostly of hydrogen, with some helium, and small amounts of heavier elements fused by previous generations of stars.[6]
-Senators, of course, know the politics of their states much better than most of us outside observers. But most of them also know they got their jobs by, at some point, upsetting the status quo – beating an incumbent, surprising a front-runner, grabbing a forgotten issue and rallying the public. In business and in politics, new ideas are disruptive. If the Sleeping 72 want to avoid becoming the Kodak or Blockbuster of politics, they’d better wake up to the threat of climate change.
+As the pre-solar nebula[6] collapsed, conservation of angular momentum caused it to rotate faster. The center, where most of the mass collected, became increasingly hotter than the surrounding disc.[5] As the contracting nebula rotated faster, it began to flatten into a protoplanetary disc with a diameter of roughly 200 AU (30 billion km; 19 billion mi)[5] and a hot, dense protostar at the center.[7][8] The planets formed by accretion from this disc,[9] in which dust and gas gravitationally attracted each other, coalescing to form ever larger bodies. Hundreds of protoplanets may have existed in the early Solar System, but they either merged or were destroyed or ejected, leaving the planets, dwarf planets, and leftover minor bodies.[10][11]
+Diagram of the early Solar System's protoplanetary disk, out of which Earth and other Solar System bodies formed
-Keith Gaby
+Due to their higher boiling points, only metals and silicates could exist in solid form in the warm inner Solar System close to the Sun (within the frost line). They would eventually form the rocky planets of Mercury, Venus, Earth, and Mars. Because metallic elements only comprised a very small fraction of the solar nebula, the terrestrial planets could not grow very large.[10]
-Get new posts by email
+The giant planets (Jupiter, Saturn, Uranus, and Neptune) formed further out, beyond the frost line, the point between the orbits of Mars and Jupiter where material is cool enough for volatile icy compounds to remain solid. The ices that formed these planets were more plentiful than the metals and silicates that formed the terrestrial inner planets, allowing them to grow massive enough to capture large atmospheres of hydrogen and helium, the lightest and most abundant elements.[10]
-Comments
+Leftover debris that never became planets congregated in regions such as the asteroid belt, Kuiper belt, and Oort cloud.[10] The Nice model is an explanation for the creation of these regions and how the outer planets could have formed in different positions and migrated to their current orbits through various gravitational interactions.[12][further explanation needed]
-Michael Ashley
+Within 50 million years, the pressure and density of hydrogen in the center of the protostar became great enough for it to begin thermonuclear fusion.[13] As helium accumulates at its core the Sun is growing brighter;[14] early in its main-sequence life its brightness was 70% that of what it is today.[15] The temperature, reaction rate, pressure, and density increased until hydrostatic equilibrium was achieved: the thermal pressure counterbalancing the force of gravity. At this point, the Sun became a main-sequence star.[16]
-March 10, 2014at 7:22 pm (ET)
+The main-sequence phase, from beginning to end, will last about 10 billion years for the Sun compared to around two billion years for all other subsequent phases of the Sun's pre-remnant life combined.[17] Solar wind from the Sun created the heliosphere and swept away the remaining gas and dust from the protoplanetary disc into interstellar space.[14]
-If people would pay attention to the fact that politicians follow the money not the voters they might see that this is the best time to start a green socialist/ capitalist party ( I know - it's a fantasy )
+The Solar System will remain roughly as it is known today until the hydrogen in the core of the Sun has been entirely converted to helium, which will occur roughly 5 billion years from now. This will mark the end of the Sun's main-sequence life. At that time, the core of the Sun will contract with hydrogen fusion occurring along a shell surrounding the inert helium, and the energy output will be greater than at present. The outer layers of the Sun will expand to roughly 260 times its current diameter, and the Sun will become a red giant. Because of its increased surface area, the surface of the Sun will be cooler (2,600 K (2,330 °C; 4,220 °F) at its coolest) than it is on the main sequence.[17]
+Overview of the evolution of the Sun, a G-type main-sequence star. Around 11 billion years after being formed by the Solar System's protoplanetary disk, the Sun will expand to become a red giant; Mercury, Venus and possibly the Earth will be swallowed.
-Vivian Tisevich
+The expanding Sun is expected to vaporize Mercury as well as Venus, and render Earth uninhabitable (possibly destroying it as well). Eventually, the core will be hot enough for helium fusion; the Sun will burn helium for a fraction of the time it burned hydrogen in the core. The Sun is not massive enough to commence the fusion of heavier elements, and nuclear reactions in the core will dwindle. Its outer layers will be ejected into space, leaving behind a dense white dwarf, half the original mass of the Sun but only the size of Earth.[18] The ejected outer layers will form what is known as a planetary nebula, returning some of the material that formed the Sun—but now enriched with heavier elements like carbon—to the interstellar medium.[19]
+Structure and composition
+Further information: List of Solar System objects and Planet § Planetary attributes
-March 10, 2014at 9:17 pm (ET)
+The word solar means "pertaining to the Sun", which is derived from the Latin word sol, meaning Sun.[20] The Sun is the dominant gravitational member of the Solar System, and its planetary system is maintained in a relatively stable, slowly evolving state by following isolated, gravitationally bound orbits around the Sun.[21]
+Orbits
+Animations of the Solar System's inner planets and outer planets orbiting; the latter animation is 100 times faster than the former. Jupiter is three times as far from the Sun as Mars.
+
+The planets and other large objects in orbit around the Sun lie near the plane of Earth's orbit, known as the ecliptic. Smaller icy objects such as comets frequently orbit at significantly greater angles to this plane.[22][23] Most of the planets in the Solar System have secondary systems of their own, being orbited by natural satellites called moons. Many of the largest natural satellites are in synchronous rotation, with one face permanently turned toward their parent. The four giant planets have planetary rings, thin bands of tiny particles that orbit them in unison.[24]
+
+As a result of the formation of the Solar System, planets and most other objects orbit the Sun in the same direction that the Sun is rotating. That is, counter-clockwise, as viewed from above Earth's north pole.[25] There are exceptions, such as Halley's Comet.[26] Most of the larger moons orbit their planets in prograde direction, matching the planetary rotation; Neptune's moon Triton is the largest to orbit in the opposite, retrograde manner.[27] Most larger objects rotate around their own axes in the prograde direction relative to their orbit, though the rotation of Venus is retrograde.[28]
+
+To a good first approximation, Kepler's laws of planetary motion describe the orbits of objects around the Sun.[29]: 433–437 These laws stipulate that each object travels along an ellipse with the Sun at one focus, which causes the body's distance from the Sun to vary over the course of its year. A body's closest approach to the Sun is called its perihelion, whereas its most distant point from the Sun is called its aphelion.[30]: 9-6 With the exception of Mercury, the orbits of the planets are nearly circular, but many comets, asteroids, and Kuiper belt objects follow highly elliptical orbits. Kepler's laws only account for the influence of the Sun's gravity upon an orbiting body, not the gravitational pulls of different bodies upon each other. On a human time scale, these additional perturbations can be accounted for using numerical models,[30]: 9-6 but the planetary system can change chaotically over billions of years.[31]
+
+The angular momentum of the Solar System is a measure of the total amount of orbital and rotational momentum possessed by all its moving components.[32] Although the Sun dominates the system by mass, it accounts for only about 2% of the angular momentum.[33][34] The planets, dominated by Jupiter, account for most of the rest of the angular momentum due to the combination of their mass, orbit, and distance from the Sun, with a possibly significant contribution from comets.[33]
+Composition
+
+The overall structure of the charted regions of the Solar System consists of the Sun, four smaller inner planets surrounded by a belt of mostly rocky asteroids, and four giant planets surrounded by the Kuiper belt of mostly icy objects. Astronomers sometimes informally divide this structure into separate regions. The inner Solar System includes the four terrestrial planets and the asteroid belt. The outer Solar System is beyond the asteroids, including the four giant planets.[35] Since the discovery of the Kuiper belt, the outermost parts of the Solar System are considered a distinct region consisting of the objects beyond Neptune.[36]
+
+The principal component of the Solar System is the Sun, a low-mass star that contains 99.86% of the system's known mass and dominates it gravitationally.[37] The Sun's four largest orbiting bodies, the giant planets, account for 99% of the remaining mass, with Jupiter and Saturn together comprising more than 90%. The remaining objects of the Solar System (including the four terrestrial planets, the dwarf planets, moons, asteroids, and comets) together comprise less than 0.002% of the Solar System's total mass.[f]
+
+The Sun is composed of roughly 98% hydrogen and helium,[41] as are Jupiter and Saturn.[42][43] A composition gradient exists in the Solar System, created by heat and light pressure from the early Sun; those objects closer to the Sun, which are more affected by heat and light pressure, are composed of elements with high melting points. Objects farther from the Sun are composed largely of materials with lower melting points.[44] The boundary in the Solar System beyond which those volatile substances could coalesce is known as the frost line, and it lies at roughly five times the Earth's distance from the Sun.[3]
+
+The objects of the inner Solar System are composed mostly of rocky materials,[45] such as silicates, iron or nickel.[46] Jupiter and Saturn are composed mainly of gases with extremely low melting points and high vapor pressure, such as hydrogen, helium, and neon.[46] Ices, like water, methane, ammonia, hydrogen sulfide, and carbon dioxide,[45] have a melting points of up to a few hundred kelvins.[46] They can be found as ices, liquids, or gases in various places in the Solar System.[46] Icy substances comprise the majority of the satellites of the giant planets, as well as most of Uranus and Neptune (the so-called "ice giants") and the numerous small objects that lie beyond Neptune's orbit.[45][47] Together, gases and ices are referred to as volatiles.[48]
+Distances and scales
+The Sun's, planets', dwarf planets' and moons' size to scale, labelled. Distance of objects is not to scale. The asteroid belt lies between the orbits of Mars and Jupiter, the Kuiper belt lies beyond Neptune's orbit.
+To-scale diagram of distance between planets, with the white bar showing orbital variations. The size of the planets is not to scale.
+
+The astronomical unit [AU] (150,000,000 km; 93,000,000 mi) would be the distance from the Earth to the Sun if the planet's orbit were perfectly circular.[49] For comparison, the radius of the Sun is 0.0047 AU (700,000 km; 400,000 mi).[50] Thus, the Sun occupies 0.00001% (10−5 %) of the volume of a sphere with a radius the size of Earth's orbit, whereas Earth's volume is roughly one millionth (10−6) that of the Sun. Jupiter, the largest planet, is 5.2 astronomical units (780,000,000 km; 480,000,000 mi) from the Sun and has a radius of 71,000 km (0.00047 AU; 44,000 mi), whereas the most distant planet, Neptune, is 30 AU (4.5×109 km; 2.8×109 mi) from the Sun.[43][51]
+
+With a few exceptions, the farther a planet or belt is from the Sun, the larger the distance between its orbit and the orbit of the next nearest object to the Sun. For example, Venus is approximately 0.33 AU farther out from the Sun than Mercury, whereas Saturn is 4.3 AU out from Jupiter, and Neptune lies 10.5 AU out from Uranus. Attempts have been made to determine a relationship between these orbital distances, like the Titius–Bode law[52] and Johannes Kepler's model based on the Platonic solids,[53] but ongoing discoveries have invalidated these hypotheses.[54]
+
+Some Solar System models attempt to convey the relative scales involved in the Solar System in human terms. Some are small in scale (and may be mechanical—called orreries)—whereas others extend across cities or regional areas.[55] The largest such scale model, the Sweden Solar System, uses the 110-metre (361 ft) Avicii Arena in Stockholm as its substitute Sun, and, following the scale, Jupiter is a 7.5-metre (25-foot) sphere at Stockholm Arlanda Airport, 40 km (25 mi) away, whereas the farthest current object, Sedna, is a 10 cm (4 in) sphere in Luleå, 912 km (567 mi) away.[56][57]
+
+If the Sun–Neptune distance is scaled to 100 metres (330 ft), then the Sun would be about 3 cm (1.2 in) in diameter (roughly two-thirds the diameter of a golf ball), the giant planets would be all smaller than about 3 mm (0.12 in), and Earth's diameter along with that of the other terrestrial planets would be smaller than a flea (0.3 mm or 0.012 in) at this scale.[58]
+Interplanetary environment
+The zodiacal light, caused by interplanetary dust
+
+The outermost layer of the Solar atmosphere is the heliosphere, which permeates much of the Solar planetary system. Along with light, the Sun radiates a continuous stream of charged particles (a plasma) called the solar wind. This stream of particles spreads outwards at speeds from 900,000 kilometres per hour (560,000 mph) to 2,880,000 kilometres per hour (1,790,000 mph),[59] filling the vacuum between the bodies of the Solar System. The result is a thin, dusty atmosphere, called the interplanetary medium, which extends to at least 100 AU (15 billion km; 9.3 billion mi). Beyond the heliosphere, large objects remain gravitationally bound to the sun, but the flow of matter in the interstellar medium homogenizes the distribution of micro-scale objects (see § Farthest regions).[60]
+
+The interplanetary medium is home to at least two disc-like regions of cosmic dust. The first, the zodiacal dust cloud, lies in the inner Solar System and causes the zodiacal light. It may have been formed by collisions within the asteroid belt brought on by gravitational interactions with the planets; a more recent proposed origin is the planet Mars.[61] The second dust cloud extends from about 10 AU (1.5 billion km; 930 million mi) to about 40 AU (6.0 billion km; 3.7 billion mi), and was probably created by collisions within the Kuiper belt.[62][63]
+
+Activity on the Sun's surface, such as solar flares and coronal mass ejections, disturbs the heliosphere, creating space weather and causing geomagnetic storms.[64] Coronal mass ejections and similar events blow a magnetic field and huge quantities of material from the surface of the Sun. The interaction of this magnetic field and material with Earth's magnetic field funnels charged particles into Earth's upper atmosphere, where its interactions create aurorae seen near the magnetic poles.[65] The largest stable structure within the heliosphere is the heliospheric current sheet, a spiral form created by the actions of the Sun's rotating magnetic field on the interplanetary medium.[66][67]
+Life habitability
+Main article: Planetary habitability in the Solar System
+
+Besides solar energy, the primary characteristic of the Solar System enabling the presence of life is the heliosphere and planetary magnetic fields (for those planets that have them). These magnetic fields partially shield the Solar System from high-energy interstellar particles called cosmic rays. The density of cosmic rays in the interstellar medium and the strength of the Sun's magnetic field change on very long timescales, so the level of cosmic-ray penetration in the Solar System varies, though by how much is unknown.[68]
+
+Earth's magnetic field also stops its atmosphere from being stripped away by the solar wind.[69] Venus and Mars do not have magnetic fields, and as a result the solar wind causes their atmospheres to gradually bleed away into space.[70]
+
+The zone of habitability of the Solar System is conventionally located in the inner Solar System, where planetary surface or atmospheric temperatures admit the possibility of liquid water.[71] Habitability might also be possible in subsurface oceans of various outer Solar System moons.[72]
+Sun
+Main article: Sun
+The Sun in true white color
+
+The Sun is the Solar System's star and by far its most massive component. Its large mass (332,900 Earth masses),[73] which comprises 99.86% of all the mass in the Solar System,[74] produces temperatures and densities in its core high enough to sustain nuclear fusion of hydrogen into helium.[75] This releases an enormous amount of energy, mostly radiated into space as electromagnetic radiation peaking in visible light.[76][77]
+
+Because the Sun fuses hydrogen into helium at its core, it is a main-sequence star. More specifically, it is a G2-type main-sequence star, where the type designation refers to its effective temperature. Hotter main-sequence stars are more luminous but shorter lived. The Sun's temperature is intermediate between that of the hottest stars and that of the coolest stars. Stars brighter and hotter than the Sun are rare, whereas substantially dimmer and cooler stars, known as red dwarfs, make up about 75% of the stars in the Milky Way.[78][79]
+
+The Sun is a population I star; it has a higher abundance of elements heavier than hydrogen and helium ("metals" in astronomical parlance) than the older population II stars.[80] Elements heavier than hydrogen and helium were formed in the cores of ancient and exploding stars, so the first generation of stars had to die before the universe could be enriched with these atoms. The oldest stars contain few metals, whereas stars born later have more. This higher metallicity is thought to have been crucial to the Sun's development of a planetary system because the planets form from the accretion of "metals".[81]
+Inner Solar System
+Overview of the Inner Solar System up to the Jovian System
+
+The inner Solar System is the region comprising the terrestrial planets and the asteroid belt.[82] Composed mainly of silicates and metals,[83] the objects of the inner Solar System are relatively close to the Sun; the radius of this entire region is less than the distance between the orbits of Jupiter and Saturn. This region is also within the frost line, which is a little less than 5 AU (750 million km; 460 million mi) from the Sun.[22]
+Inner planets
+Main article: Terrestrial planet
+The four terrestrial planets Mercury, Venus, Earth and Mars
+
+The four terrestrial or inner planets have dense, rocky compositions, few or no moons, and no ring systems. They are in hydrostatic equilibrium, forming a rounded shape, and have undergone planetary differentiation, causing chemical elements to accumulate at different radii. They are composed largely of refractory minerals such as silicates—which form their crusts and mantles—and metals such as iron and nickel which form their cores. Three of the four inner planets (Venus, Earth and Mars) have atmospheres substantial enough to generate weather; all have impact craters and tectonic surface features, such as rift valleys and volcanoes. The term inner planet should not be confused with inferior planet, which designates those planets that are closer to the Sun than Earth (i.e. Mercury and Venus).[84]
+Mercury
+Main article: Mercury (planet)
+
+Mercury (0.307–0.588 AU (45.9–88.0 million km; 28.5–54.7 million mi) from the Sun[85]) is the closest planet to the Sun. The smallest planet in the Solar System (0.055 MEarth), Mercury has no natural satellites. The dominant geological features are impact craters or basins with ejecta blankets, the remains of early volcanic activity including magma flows, and lobed ridges or rupes that were probably produced by a period of contraction early in the planet's history.[86] Mercury's very tenuous atmosphere consists of solar-wind particles trapped by Mercury's magnetic field, as well as atoms blasted off its surface by the solar wind.[87][88] Its relatively large iron core and thin mantle have not yet been adequately explained. Hypotheses include that its outer layers were stripped off by a giant impact, or that it was prevented from fully accreting by the young Sun's energy.[89][90] There have been searches for "Vulcanoids", asteroids in stable orbits between Mercury and the Sun, but none have been discovered.[91][92]
+Venus
+Main article: Venus
+
+Venus (0.718–0.728 AU (107.4–108.9 million km; 66.7–67.7 million mi) from the Sun[85]) is close in size to Earth (0.815 MEarth) and, like Earth, has a thick silicate mantle around an iron core, a substantial atmosphere, and evidence of internal geological activity. It is much drier than Earth, and its atmosphere is ninety times as dense. Venus has no natural satellites. It is the hottest planet, with surface temperatures over 400 °C (752 °F), mainly due to the amount of greenhouse gases in the atmosphere.[93] The planet has no magnetic field that would prevent the depletion of its substantial atmosphere, which suggests that its atmosphere is being replenished by volcanic eruptions.[94] A relatively young planetary surface displays extensive evidence of volcanic activity, but is devoid of plate tectonics. It may undergo resurfacing episodes on a time scale of 700 million years.[95]
+Earth
+Main article: Earth
+
+Earth (0.983–1.017 AU (147.1–152.1 million km; 91.4–94.5 million mi) from the Sun) is the largest and densest of the inner planets, the only one known to have current geological activity, and the only place in the universe where life is known to exist.[96] Its liquid hydrosphere is unique among the terrestrial planets, and it is the only planet where plate tectonics has been observed.[97] Earth's atmosphere is radically different from those of the other planets, having been altered by the presence of life to contain 21% free oxygen.[98][99] The planetary magnetosphere shields the surface from solar and cosmic radiation, limiting atmospheric stripping and maintaining habitability.[100] It has one natural satellite, the Moon, the only large satellite of a terrestrial planet in the Solar System.
+Mars
+Main article: Mars
+
+Mars (1.382–1.666 AU (206.7–249.2 million km; 128.5–154.9 million mi) from the Sun) is smaller than Earth and Venus (0.107 MEarth). It has an atmosphere of mostly carbon dioxide with a surface pressure of 6.1 millibars (0.088 psi; 0.18 inHg); roughly 0.6% of that of Earth but sufficient to support weather phenomena.[101] Its surface, peppered with volcanoes, such as Olympus Mons, and rift valleys, such as Valles Marineris, shows geological activity that may have persisted until as recently as 2 million years ago.[102] Its red color comes from iron oxide (rust) in its soil,[103] while the polar regions show white ice caps consisting largely of water.[104] Mars has two tiny natural satellites (Deimos and Phobos) thought to be either captured asteroids,[105] or ejected debris from a massive impact early in Mars's history.[106]
+Asteroid belt
+Main articles: Asteroid belt and Asteroid
+Linear map of the inner Solar System, showing many asteroid populations
+
+Asteroids except for the largest, Ceres, are classified as small Solar System bodies[g] and are composed mainly of carbonaceous, refractory rocky and metallic minerals, with some ice.[112][113] They range from a few metres to hundreds of kilometres in size. Asteroids smaller than one meter are usually called meteoroids and micrometeoroids (grain-sized), with the exact division between the two categories being debated over the years.[114] As of 2017, the IAU designates asteroids having a diameter between about 30 micrometres and 1 metre as micrometeoroids, and terms smaller particles "dust".[115]
+
+The asteroid belt occupies the orbit between Mars and Jupiter, between 2.3 and 3.3 AU (340 and 490 million km; 210 and 310 million mi) from the Sun. It is thought to be remnants from the Solar System's formation that failed to coalesce because of the gravitational interference of Jupiter.[116] The asteroid belt contains tens of thousands, possibly millions, of objects over one kilometre in diameter.[117] Despite this, the total mass of the asteroid belt is unlikely to be more than a thousandth of that of Earth.[40] The asteroid belt is very sparsely populated; spacecraft routinely pass through without incident.[118]
+Ceres
+Main article: Ceres (dwarf planet)
+
+Ceres (2.77 AU (414 million km; 257 million mi) from the Sun) is the largest asteroid, a protoplanet, and a dwarf planet.[g] It has a diameter of slightly under 1,000 km (620 mi) and a mass large enough for its own gravity to pull it into a spherical shape. Ceres was considered a planet when it was discovered in 1801, but as further observations revealed additional asteroids, it became common to consider it as one of the minor rather than major planets.[119] It was then reclassified again as a dwarf planet in 2006 when the IAU definition of planet was established.[120]: 218
+Pallas and Vesta
+Main articles: 2 Pallas and 4 Vesta
+
+Pallas (2.77 AU from the Sun) and Vesta (2.36 AU from the Sun) are the largest asteroids in the asteroid belt, after Ceres. They are the other two protoplanets that survive more or less intact. At about 520 km (320 mi) in diameter, they were large enough to have developed planetary geology in the past, but both have suffered large impacts and been battered out of being round.[121][122][123] Fragments from impacts upon these two bodies survive elsewhere in the asteroid belt, as the Pallas family and Vesta family. Both were considered planets upon their discoveries in 1802 and 1807 respectively, and like Ceres, eventually considered minor planets with the discovery of more asteroids. Some authors today have begun to consider Pallas and Vesta as planets again, along with Ceres, under geophysical definitions of the term.[108]
+Asteroid groups
+
+Asteroids in the asteroid belt are divided into asteroid groups and families based on their orbital characteristics. Kirkwood gaps are sharp dips in the distribution of asteroid orbits that correspond to orbital resonances with Jupiter.[124] Asteroid moons are asteroids that orbit larger asteroids. They are not as clearly distinguished as planetary moons, sometimes being almost as large as their partners (e.g. that of 90 Antiope). The asteroid belt includes main-belt comets, which may have been the source of Earth's water.[125]
+
+Jupiter trojans are located in either of Jupiter's L4 or L5 points (gravitationally stable regions leading and trailing a planet in its orbit); the term trojan is also used for small bodies in any other planetary or satellite Lagrange point. Hilda asteroids are in a 2:3 resonance with Jupiter; that is, they go around the Sun three times for every two Jupiter orbits.[126] The inner Solar System contains near-Earth asteroids, many of which cross the orbits of the inner planets.[127] Some of them are potentially hazardous objects.[128]
+Outer Solar System
+Plot of objects around the Kuiper belt and other asteroid populations, the J, S, U and N denotes Jupiter, Saturn, Uranus and Neptune
+
+The outer region of the Solar System is home to the giant planets and their large moons. The centaurs and many short-period comets also orbit in this region. Due to their greater distance from the Sun, the solid objects in the outer Solar System contain a higher proportion of volatiles, such as water, ammonia, and methane than those of the inner Solar System because the lower temperatures allow these compounds to remain solid, without significant rates of sublimation.[10]
+Outer planets
+Main article: Giant planet
+The outer planets Jupiter, Saturn, Uranus and Neptune, compared to the inner planets Earth, Venus, Mars, and Mercury at the bottom right
+
+The four outer planets, also called giant planets or Jovian planets, collectively make up 99% of the mass known to orbit the Sun.[f] Jupiter and Saturn are together more than 400 times the mass of Earth and consist overwhelmingly of the gases hydrogen and helium, hence their designation as gas giants.[129] Uranus and Neptune are far less massive—less than 20 Earth masses (MEarth) each—and are composed primarily of ice. For these reasons, some astronomers suggest they belong in their own category, ice giants.[130] All four giant planets have rings, although only Saturn's ring system is easily observed from Earth. The term superior planet designates planets outside Earth's orbit and thus includes both the outer planets and Mars.[84]
+
+The ring–moon systems of Jupiter, Saturn, and Uranus are like miniature versions of the Solar System; that of Neptune is significantly different, having been disrupted by the capture of its largest moon Triton.[131]
+Jupiter
+Main article: Jupiter
+
+Jupiter (4.951–5.457 AU (740.7–816.4 million km; 460.2–507.3 million mi) from the Sun[85]), at 318 MEarth, is 2.5 times the mass of all the other planets put together. It is composed largely of hydrogen and helium. Jupiter's strong internal heat creates semi-permanent features in its atmosphere, such as cloud bands and the Great Red Spot. The planet possesses a 4.2–14 Gauss strength magnetosphere that spans 22–29 million km, making it, in certain respects, the largest object in the Solar System.[132] Jupiter has 95 known satellites. The four largest, Ganymede, Callisto, Io, and Europa, are called the Galilean moons: they show similarities to the terrestrial planets, such as volcanism and internal heating.[133] Ganymede, the largest satellite in the Solar System, is larger than Mercury; Callisto is almost as large.[134]
+Saturn
+Main article: Saturn
+
+Saturn (9.075–10.07 AU (1.3576–1.5065 billion km; 843.6–936.1 million mi) from the Sun[85]), distinguished by its extensive ring system, has several similarities to Jupiter, such as its atmospheric composition and magnetosphere. Although Saturn has 60% of Jupiter's volume, it is less than a third as massive, at 95 MEarth. Saturn is the only planet of the Solar System that is less dense than water. The rings of Saturn are made up of small ice and rock particles.[135] Saturn has 145 confirmed satellites composed largely of ice. Two of these, Titan and Enceladus, show signs of geological activity;[136] they, as well as five other Saturnian moons (Iapetus, Rhea, Dione, Tethys, and Mimas), are large enough to be round. Titan, the second-largest moon in the Solar System, is bigger than Mercury and the only satellite in the Solar System to have a substantial atmosphere.[137][138]
+Uranus
+Main article: Uranus
+
+Uranus (18.27–20.06 AU (2.733–3.001 billion km; 1.698–1.865 billion mi) from the Sun[85]), at 14 MEarth, has the lowest mass of the outer planets. Uniquely among the planets, it orbits the Sun on its side; its axial tilt is over ninety degrees to the ecliptic. This gives the planet extreme seasonal variation as each pole points toward and then away from the Sun.[139] It has a much colder core than the other giant planets and radiates very little heat into space.[140] As a consequence, it has the coldest planetary atmosphere in the Solar System.[141] Uranus has 27 known satellites, the largest ones being Titania, Oberon, Umbriel, Ariel, and Miranda.[142] Like the other giant planets, it possesses a ring system and magnetosphere.[143]
+Neptune
+Main article: Neptune
+
+Neptune (29.89–30.47 AU (4.471–4.558 billion km; 2.778–2.832 billion mi) from the Sun[85]), though slightly smaller than Uranus, is more massive (17 MEarth) and hence more dense. It radiates more internal heat than Uranus, but not as much as Jupiter or Saturn.[144] Neptune has 14 known satellites. The largest, Triton, is geologically active, with geysers of liquid nitrogen.[145] Triton is the only large satellite with a retrograde orbit, which indicates that it did not form with Neptune, but was probably captured from the Kuiper belt.[146] Neptune is accompanied in its orbit by several minor planets, termed Neptune trojans, that either lead or trail the planet by about one-sixth of the way around the Sun, positions known as Lagrange points.[147]
+Centaurs
+Main article: Centaur (small Solar System body)
+
+The centaurs are icy comet-like bodies whose orbits have semi-major axes greater than Jupiter's (5.5 AU (820 million km; 510 million mi)) and less than Neptune's (30 AU (4.5 billion km; 2.8 billion mi)). These are former Kuiper belt and scattered disc objects that were gravitationally perturbed closer to the Sun by the outer planets, and are expected to become comets or get ejected out of the Solar System.[39] While most centaurs are inactive and asteroid-like, some exhibit clear cometary activity, such as the first centaur discovered, 2060 Chiron, which has been classified as a comet (95P) because it develops a coma just as comets do when they approach the Sun.[148] The largest known centaur, 10199 Chariklo, has a diameter of about 250 km (160 mi) and is one of the only few minor planets known to possess a ring system.[149][150]
+Comets
+Main article: Comet
+Comet Hale–Bopp seen in 1997
+
+Comets are small Solar System bodies,[g] typically only a few kilometres across, composed largely of volatile ices. They have highly eccentric orbits, generally a perihelion within the orbits of the inner planets and an aphelion far beyond Pluto. When a comet enters the inner Solar System, its proximity to the Sun causes its icy surface to sublimate and ionise, creating a coma: a long tail of gas and dust often visible to the naked eye.[151]
+
+Short-period comets have orbits lasting less than two hundred years. Long-period comets have orbits lasting thousands of years. Short-period comets are thought to originate in the Kuiper belt, whereas long-period comets, such as Hale–Bopp, are thought to originate in the Oort cloud. Many comet groups, such as the Kreutz sungrazers, formed from the breakup of a single parent.[152] Some comets with hyperbolic orbits may originate outside the Solar System, but determining their precise orbits is difficult.[153] Old comets whose volatiles have mostly been driven out by solar warming are often categorised as asteroids.[154]
+Trans-Neptunian region
+Distribution and size of trans-Neptunian objects. The horizontal axis stand for the semi-major axis of the body, the vertical axis stands for the inclination of the orbit, and the size of the circle stands for the relative size of the object.
+Size comparison of some large TNOs with Earth: Pluto and its moons, Eris, Makemake, Haumea, Sedna, Gonggong, Quaoar, Orcus, Salacia, and 2002 MS4.
+
+Beyond the orbit of Neptune lies the area of the "trans-Neptunian region", with the doughnut-shaped Kuiper belt, home of Pluto and several other dwarf planets, and an overlapping disc of scattered objects, which is tilted toward the plane of the Solar System and reaches much further out than the Kuiper belt. The entire region is still largely unexplored. It appears to consist overwhelmingly of many thousands of small worlds—the largest having a diameter only a fifth that of Earth and a mass far smaller than that of the Moon—composed mainly of rock and ice. This region is sometimes described as the "third zone of the Solar System", enclosing the inner and the outer Solar System.[155]
+Kuiper belt
+Main article: Kuiper belt
+
+The Kuiper belt is a great ring of debris similar to the asteroid belt, but consisting mainly of objects composed primarily of ice.[156] It extends between 30 and 50 AU (4.5 and 7.5 billion km; 2.8 and 4.6 billion mi) from the Sun. It is composed mainly of small Solar System bodies, although the largest few are probably large enough to be dwarf planets.[157] There are estimated to be over 100,000 Kuiper belt objects with a diameter greater than 50 km (30 mi), but the total mass of the Kuiper belt is thought to be only a tenth or even a hundredth the mass of Earth.[39] Many Kuiper belt objects have satellites,[158] and most have orbits that are substantially inclined (~10°) to the plane of the ecliptic.[159]
+
+The Kuiper belt can be roughly divided into the "classical" belt and the resonant trans-Neptunian objects.[156] The latter have orbits whose periods are in a simple ratio to that of Neptune: for example, going around the Sun twice for every three times that Neptune does, or once for every two. The classical belt consists of objects having no resonance with Neptune, and extends from roughly 39.4 to 47.7 AU (5.89 to 7.14 billion km; 3.66 to 4.43 billion mi).[160] Members of the classical Kuiper belt are sometimes called "cubewanos", after the first of their kind to be discovered, originally designated 1992 QB1; they are still in near primordial, low-eccentricity orbits.[161]
+Pluto and Charon
+Main articles: Pluto and Charon (moon)
+
+The dwarf planet Pluto (with an average orbit of 39 AU (5.8 billion km; 3.6 billion mi) from the Sun) is the largest known object in the Kuiper belt. When discovered in 1930, it was considered to be the ninth planet; this changed in 2006 with the adoption of a formal definition of planet. Pluto has a relatively eccentric orbit inclined 17 degrees to the ecliptic plane and ranging from 29.7 AU (4.44 billion km; 2.76 billion mi) from the Sun at perihelion (within the orbit of Neptune) to 49.5 AU (7.41 billion km; 4.60 billion mi) at aphelion. Pluto has a 2:3 resonance with Neptune, meaning that Pluto orbits twice round the Sun for every three Neptunian orbits. Kuiper belt objects whose orbits share this resonance are called plutinos.[162]
+
+Charon, the largest of Pluto's moons, is sometimes described as part of a binary system with Pluto, as the two bodies orbit a barycenter of gravity above their surfaces (i.e. they appear to "orbit each other"). Beyond Charon, four much smaller moons, Styx, Nix, Kerberos, and Hydra, orbit Pluto.[163]
+Others
+
+Besides Pluto, astronomers generally agree that at least four other Kuiper belt objects are dwarf planets,[157] though there is some doubt for Orcus,[164] and additional bodies have also been proposed:[165]
+
+ Makemake (45.79 AU average from the Sun), although smaller than Pluto, is the largest known object in the classical Kuiper belt (that is, a Kuiper belt object not in a confirmed resonance with Neptune). Makemake is the brightest object in the Kuiper belt after Pluto. Discovered in 2005, it was officially named in 2009.[166] Its orbit is far more inclined than Pluto's, at 29°.[167] It has one known moon.[168]
+ Haumea (43.13 AU average from the Sun) is in an orbit similar to Makemake, except that it is in a temporary 7:12 orbital resonance with Neptune.[169] Like Makemake, it was discovered in 2005.[170] Uniquely among the dwarf planets, Haumea possess a ring system, two known moons named Hiʻiaka and Namaka, and rotates so quickly (once every 3.9 hours) that it is stretched into an ellipsoid. It is part of a collisional family of Kuiper belt objects that share similar orbits, which suggests a giant collision took place on Haumea and ejected its fragments into space billions of years ago.[171]
+ Quaoar (43.69 AU average from the Sun) is the second-largest known object in the classical Kuiper belt, after Makemake. Its orbit is significantly less eccentric and inclined than those of Makemake or Haumea.[169] It possesses a ring system and one known moon, Weywot.[172]
+ Orcus (39.40 AU average from the Sun) is in the same 2:3 orbital resonance with Neptune as Pluto, and is the largest such object after Pluto itself.[169] Its eccentricity and inclination are similar to Pluto's, but its perihelion lies about 120° from that of Pluto. Thus, the phase of Orcus's orbit is opposite to Pluto's: Orcus is at aphelion (most recently in 2019) around when Pluto is at perihelion (most recently in 1989) and vice versa.[173] For this reason, it has been called the anti-Pluto.[174][175] It has one known moon, Vanth.[176]
+
+Scattered disc
+Main article: Scattered disc
+The orbital eccentricities and inclinations of the scattered disc population compared to the classical and resonant Kuiper belt objects
+
+The scattered disc, which overlaps the Kuiper belt but extends out to near 500 AU, is thought to be the source of short-period comets. Scattered-disc objects are believed to have been perturbed into erratic orbits by the gravitational influence of Neptune's early outward migration. Most scattered disc objects (SDOs) have perihelia within the Kuiper belt but aphelia far beyond it (some more than 150 AU from the Sun). SDOs' orbits can also be inclined up to 46.8° from the ecliptic plane.[177] Some astronomers consider the scattered disc to be merely another region of the Kuiper belt and describe scattered-disc objects as "scattered Kuiper belt objects".[178] Some astronomers also classify centaurs as inward-scattered Kuiper belt objects along with the outward-scattered residents of the scattered disc.[179]
+Eris and Gonggong
+
+Eris (67.78 AU average from the Sun) is the largest known scattered disc object, and caused a debate about what constitutes a planet, because it is 25% more massive than Pluto[180] and about the same diameter. It is the most massive of the known dwarf planets. It has one known moon, Dysnomia. Like Pluto, its orbit is highly eccentric, with a perihelion of 38.2 AU (roughly Pluto's distance from the Sun) and an aphelion of 97.6 AU, and steeply inclined to the ecliptic plane at an angle of 44°.[181]
+
+Gonggong (67.38 AU average from the Sun) is another dwarf planet in a comparable orbit to Eris, except that it is in a 3:10 resonance with Neptune.[182] It has one known moon, Xiangliu.[183]
+Farthest regions
+
+The point at which the Solar System ends and interstellar space begins is not precisely defined because its outer boundaries are shaped by two forces: the solar wind and the Sun's gravity. The limit of the solar wind's influence is roughly four times Pluto's distance from the Sun; this heliopause, the outer boundary of the heliosphere, is considered the beginning of the interstellar medium.[60] The Sun's Hill sphere, the effective range of its gravitational dominance, is thought to extend up to a thousand times farther and encompasses the hypothetical Oort cloud.[184]
+Edge of the heliosphere
+Main article: Heliosheath
+Artistic depiction of the Solar System's heliosphere
+
+The Sun's stellar-wind bubble, the heliosphere, a region of space dominated by the Sun, has its boundary at the termination shock, which is roughly 80–100 AU from the Sun upwind of the interstellar medium and roughly 200 AU from the Sun downwind.[185] Here the solar wind collides with the interstellar medium[186] and dramatically slows, condenses and becomes more turbulent,[185] forming a great oval structure known as the heliosheath. This structure has been theorized to look and behave very much like a comet's tail, extending outward for a further 40 AU on the upwind side but tailing many times that distance downwind.[187] Evidence from the Cassini and Interstellar Boundary Explorer spacecraft has suggested that it is forced into a bubble shape by the constraining action of the interstellar magnetic field,[188][189] but the actual shape remains unknown.[190]
+
+The outer boundary of the heliosphere, the heliopause, is the point at which the solar wind finally terminates and is the beginning of interstellar space.[60] Voyager 1 and Voyager 2 passed the termination shock and entered the heliosheath at 94 and 84 AU from the Sun, respectively.[191][192] Voyager 1 was reported to have crossed the heliopause in August 2012, and Voyager 2 in December 2018.[193][194]
+
+The shape and form of the outer edge of the heliosphere is likely affected by the fluid dynamics of interactions with the interstellar medium as well as solar magnetic fields prevailing to the south, e.g. it is bluntly shaped with the northern hemisphere extending 9 AU farther than the southern hemisphere.[185] Beyond the heliopause, at around 230 AU, lies the bow shock: a plasma "wake" left by the Sun as it travels through the Milky Way.[195]
+Detached objects
+The detached object Sedna and its orbit within the Solar System
+Main articles: Detached object and Sednoid
+
+Sedna (with an average orbit of 520 AU from the Sun) is a large, reddish object with a gigantic, highly elliptical orbit that takes it from about 76 AU at perihelion to 940 AU at aphelion and takes 11,400 years to complete. Mike Brown, who discovered the object in 2003, asserts that it cannot be part of the scattered disc or the Kuiper belt because its perihelion is too distant to have been affected by Neptune's migration. He and other astronomers consider it to be the first in an entirely new population, sometimes termed "distant detached objects" (DDOs), which also may include the object 2000 CR105, which has a perihelion of 45 AU, an aphelion of 415 AU, and an orbital period of 3,420 years.[196] Brown terms this population the "inner Oort cloud" because it may have formed through a similar process, although it is far closer to the Sun.[197] Sedna is very likely a dwarf planet, though its shape has yet to be determined. The second unequivocally detached object, with a perihelion farther than Sedna's at roughly 81 AU, is 2012 VP113, discovered in 2012. Its aphelion is only about half that of Sedna's, at 458 AU.[198][199]
+Oort cloud
+Main article: Oort cloud
+
+The Oort cloud is a hypothetical spherical cloud of up to a trillion icy objects that is thought to be the source for all long-period comets and to surround the Solar System at roughly 50,000 AU (around 1 light-year (ly)) from the Sun, and possibly to as far as 100,000 AU (1.87 ly). It is thought to be composed of comets that were ejected from the inner Solar System by gravitational interactions with the outer planets. Oort cloud objects move very slowly, and can be perturbed by infrequent events, such as collisions, the gravitational effects of a passing star, or the galactic tide, the tidal force exerted by the Milky Way.[200][201]
+Boundaries
+See also: Planets beyond Neptune, Planet Nine, and List of Solar System objects by greatest aphelion
+
+Much of the Solar System is still unknown. The Sun's gravitational field is estimated to dominate the gravitational forces of surrounding stars out to about two light-years (125,000 AU). Lower estimates for the radius of the Oort cloud, by contrast, do not place it farther than 50,000 AU.[202] Most of the mass is orbiting in the region between 3,000 and 100,000 AU.[203] Despite discoveries such as Sedna, the region between the Kuiper belt and the Oort cloud, an area tens of thousands of AU in radius, is still virtually unmapped. Learning about this region of space is difficult, because it depends upon inferences from those few objects whose orbits happen to be perturbed such that they fall closer to the Sun, and even then, detecting these objects has often been possible only when they happened to become bright enough to register as comets.[204] Objects may yet be discovered in the Solar System's uncharted regions.[205] The furthest known objects, such as Comet West, have aphelia around 70,000 AU from the Sun.[206]
+Comparison with other star systems
+1e, 1f and 1g is in the habitable zone
+Habitable zones of TRAPPIST-1 and the Solar System; here, the TRAPPIST-1 system is enlarged 25 times. The displayed planetary surfaces on TRAPPIST-1 are speculative.
+
+Compared to many extrasolar systems, the Solar System stands out in lacking planets interior to the orbit of Mercury.[207][208] The known Solar System also lacks super-Earths, planets between one and ten times as massive as the Earth,[207] although the hypothetical Planet Nine, if it does exist, could be a super-Earth orbiting in the outer Solar System.[209] Uncommonly, it has only small rocky planets and large gas giants; elsewhere planets of intermediate size are typical—both rocky and gas—so there is no "gap" as seen between the size of Earth and of Neptune (with a radius 3.8 times as large). As many of these super-Earths are closer to their respective stars than Mercury is to the Sun, a hypothesis has arisen that all planetary systems start with many close-in planets, and that typically a sequence of their collisions causes consolidation of mass into few larger planets, but in case of the Solar System the collisions caused their destruction and ejection.[207][210]
+
+The orbits of Solar System planets are nearly circular. Compared to other systems, they have smaller orbital eccentricity.[207] Although there are attempts to explain it partly with a bias in the radial-velocity detection method and partly with long interactions of a quite high number of planets, the exact causes remain undetermined.[207][211]
+Location
+Celestial neighborhood
+Diagram of the Local Interstellar Cloud, the G-Cloud and surrounding stars. As of 2022, the precise location of the Solar System in the clouds is an open question in astronomy.[212]
+
+The Solar System is surrounded by the Local Interstellar Cloud, although it is not clear if it is embedded in the Local Interstellar Cloud or if it lies just outside the cloud's edge.[213][214] Multiple other interstellar clouds also exist in the region within 300 light-years of the Sun, known as the Local Bubble.[214] The latter feature is an hourglass-shaped cavity or superbubble in the interstellar medium roughly 300 light-years across. The bubble is suffused with high-temperature plasma, suggesting that it may be the product of several recent supernovae.[215]
+
+The Local Bubble is a small superbubble compared to the neighboring wider Radcliffe Wave and Split linear structures (formerly Gould Belt), each of which are some thousands of light-years in length.[216] All these structures are part of the Orion Arm, which contains most of the stars in the Milky Way that are visible to the unaided eye. The density of all matter in the local neighborhood is 0.097±0.013 M☉·pc−3.[217]
+
+Within ten light-years of the Sun there are relatively few stars, the closest being the triple star system Alpha Centauri, which is about 4.4 light-years away and may be in the Local Bubble's G-Cloud.[218] Alpha Centauri A and B are a closely tied pair of Sun-like stars, whereas the closest star to Earth, the small red dwarf Proxima Centauri, orbits the pair at a distance of 0.2 light-year. In 2016, a potentially habitable exoplanet was found to be orbiting Proxima Centauri, called Proxima Centauri b, the closest confirmed exoplanet to the Sun.[219]
+
+The next closest known fusors to the Sun are the red dwarfs Barnard's Star (at 5.9 ly), Wolf 359 (7.8 ly), and Lalande 21185 (8.3 ly).[220] The nearest brown dwarfs belong to the binary Luhman 16 system (6.6 ly), and the closest known rogue or free-floating planetary-mass object at less than 10 Jupiter masses is the sub-brown dwarf WISE 0855−0714 (7.4 ly).[221]
+
+Just beyond at 8.6 ly lies Sirius, the brightest star in Earth's night sky, with roughly twice the Sun's mass, orbited by the closest white dwarf to Earth, Sirius B. Other stars within ten light-years are the binary red-dwarf system Gliese 65 (8.7 ly) and the solitary red dwarf Ross 154 (9.7 ly).[222][223] The closest solitary Sun-like star to the Solar System is Tau Ceti at 11.9 light-years. It has roughly 80% of the Sun's mass but only about half of its luminosity.[224]
+
+The nearest and unaided-visible group of stars beyond the immediate celestial neighborhood is the Ursa Major moving group at roughly 80 light-years, which is within the Local Bubble, like the nearest as well as unaided-visible star cluster the Hyades, which lie at its edge. The closest star-forming regions are the Corona Australis Molecular Cloud, the Rho Ophiuchi cloud complex and the Taurus molecular cloud; the latter lies just beyond the Local Bubble and is part of the Radcliffe wave.[225]
+Galactic position and orbit
+See also: Location of Earth, Galactic year, and Orbit of the Sun
+Diagram of the Milky Way, with galactic features and the relative position of the Solar System labelled.
-Hmm, wondering why Ohio isn't being represented tonight? Unless I missed seeing Senator Brown and Sen. Portman's name, and if so, I apologize. I realize there are many other issues of concern to keep my reps busy, such as working to amend the Indian Child Welfare Act, that I contacted them about today, but c'mon, is climate or the abduction of children off reservations even on their top ten list? It matters to me, even tho I'm just a little ole voting gal in Ohio. When we know better, we do better. Those of you there tonight made the choice to do better. thank You!
+The Solar System is located in the Milky Way, a barred spiral galaxy with a diameter of about 100,000 light-years containing more than 100 billion stars.[226] The Sun is part of one of the Milky Way's outer spiral arms, known as the Orion–Cygnus Arm or Local Spur.[227]
-By the time the really obvious effects of climate change show, most of these senators will be out of office or died of old age. The extreme weather we experience now is easy to brush off as natural variation, and no one can say storm x was caused by climate change. It is hard for any person, especially senators to react to something unless it is staring them in the face. By the time it is staring us in the face it will be too late. The world will not end, but it will be forever changed.
-Training for a major sports event is never easy, be it for the first 5km run or the fifth ultra-marathon, but Tinké is here to the rescue! Follow the journey of Chris Small and James Rotheram, two first-time Tinké users, as they make use of this nifty device to get their body prepared for their ascent up Mount Kinabalu.
+The Sun orbits close to circular the Galactic Center (where the supermassive black hole Sagittarius A* resides) at a distance of 26,660 light-years,[228] orbiting at roughly the same speed as that of the spiral arms.[229][230] Therefore, the Sun passes through arms only rarely.
-Preparing for this big event should be no different from preparing for any other significant occasion in your life. Physical and mental preparation is important to ensure that you can perform at your peak during the event itself. The Tinké then helps keep track of your fitness and wellness levels, to ensure that you deliver your best performance.
+Its speed around the center of the Milky Way is about 220 km/s, so that it completes one revolution every 240 million years.[226] This revolution is known as the Solar System's galactic year.[231] The solar apex, the direction of the Sun's path through interstellar space, is near the constellation Hercules in the direction of the current location of the bright star Vega.[232] The plane of the ecliptic lies at an angle of about 60° to the galactic plane.[h]
+Habitability of galactic position and orbit
-Tinké interprets your fitness and stress indices through the measurement of your heart rate, respiratory rate, blood oxygen saturation and heart rate variability. The Zensorium application and dashboard then stores the readings and tracks the progress over time.
+The Solar System's location in the Milky Way is a factor in the evolutionary history of life on Earth. Spiral arms are home to a far larger concentration of supernovae, gravitational instabilities, and radiation that could disrupt the Solar System, but since Earth stays in the Local Spur and therefore does not pass frequently through spiral arms, this has given Earth long periods of stability for life to evolve.[229] However, the changing position of the Solar System relative to other parts of the Milky Way could explain periodic extinction events on Earth, according to the Shiva hypothesis or related theories, but this remains controversial.[234][235]
-“James and I haven’t done some tracking in awhile, and he came up with this idea. And so, we’re going to climb Mount Kinabalu together,” said 28-year-old Chris Small.
+The Solar System lies well outside the star-crowded environs of the Galactic Center. Near the center, gravitational tugs from nearby stars could perturb bodies in the Oort cloud and send many comets into the inner Solar System, producing collisions with potentially catastrophic implications for life on Earth. The intense radiation of the Galactic Center could also interfere with the development of complex life.[229] Stellar flybys that pass within 0.8 light-years of the Sun occur roughly once every 100,000 years. The closest well-measured approach was Scholz's Star, which approached to 52+23
+−14 kAU of the Sun some 70+15
+−10 kya, likely passing through the outer Oort cloud.[236]
+Humanity's perspective
+Main article: Discovery and exploration of the Solar System
+The motion of 'lights' moving across the sky is the basis of the classical definition of planets: wandering stars.
-“And the Tinké is good for that (Helping to prepare for the climb),” added 35-year-old James Rotheram.
+Humanity's knowledge of the Solar System has grown incrementally over the centuries. Up to the Late Middle Ages–Renaissance, astronomers from Europe to India believed Earth to be stationary at the center of the universe[237] and categorically different from the divine or ethereal objects that moved through the sky. Although the Greek philosopher Aristarchus of Samos had speculated on a heliocentric reordering of the cosmos, Nicolaus Copernicus was the first person known to have developed a mathematically predictive heliocentric system.[238][239] Heliocentrism did not triumph immediately over geocentrism, but the work of Copernicus had its champions, notably Johannes Kepler. Using a heliocentric model that improved upon Copernicus by allowing orbits to be elliptical, and the precise observational data of Tycho Brahe, Kepler produced the Rudolphine Tables, which enabled accurate computations of the positions of the then-known planets. Pierre Gassendi used them to predict a transit of Mercury in 1631, and Jeremiah Horrocks did the same for a transit of Venus in 1639. This provided a strong vindication of heliocentrism and Kepler's elliptical orbits.[240][241]
-Getting started, the duo decided to try out a hypoxia chamber to see how their body would fare under external conditions, similar to what they would face on their climb up Mount Kinabalu. After doing some simple exercises, Chris was shocked to see that his Vita reading was only 47/99.
+In the 17th century, Galileo publicized the use of the telescope in astronomy; he and Simon Marius independently discovered that Jupiter had four satellites in orbit around it.[242] Christiaan Huygens followed on from these observations by discovering Saturn's moon Titan and the shape of the rings of Saturn.[243] In 1677, Edmond Halley observed a transit of Mercury across the Sun, leading him to realize that observations of the solar parallax of a planet (more ideally using the transit of Venus) could be used to trigonometrically determine the distances between Earth, Venus, and the Sun.[244] Halley's friend Isaac Newton, in his magisterial Principia Mathematica of 1687, demonstrated that celestial bodies are not quintessentially different from Earthly ones: the same laws of motion and of gravity apply on Earth and in the skies.[29]: 142
-“A sense of a reality check, I wasn’t as healthy as I thought I was,” said Chris.
+The term "Solar System" entered the English language by 1704, when John Locke used it to refer to the Sun, planets, and comets.[245] In 1705, Halley realized that repeated sightings of a comet were of the same object, returning regularly once every 75–76 years. This was the first evidence that anything other than the planets repeatedly orbited the Sun,[246] though Seneca had theorized this about comets in the 1st century.[247] Careful observations of the 1769 transit of Venus allowed astronomers to calculate the average Earth–Sun distance as 93,726,900 miles (150,838,800 km), only 0.8% greater than the modern value.[248] Uranus, having occasionally been observed since antiquity, was recognized to be a planet orbiting beyond Saturn by 1783.[249] In 1838, Friedrich Bessel successfully measured a stellar parallax, an apparent shift in the position of a star created by Earth's motion around the Sun, providing the first direct, experimental proof of heliocentrism.[250] Neptune was identified as a planet some years later, in 1846, thanks to its gravitational pull causing a slight but detectable variation in the orbit of Uranus.[251]
-The duo knew that they had to improve their health, fitness and stamina, and fast. As part of their preparation, both friends practiced yoga for mind and body relaxation, two weeks prior to the climb.
+In the 20th century, humans began their space exploration around the Solar System, starting with placing telescopes in space.[252] Since then, humans have landed on the Moon during the Apollo program; the Apollo 13 mission marked the furthest any human has been away from Earth at 400,171 kilometers (248,655 mi).[253] All eight planets and two dwarf planets have been visited by space probes. This began with Mariner 2's fly-by of Venus in 1962, while Mariner 9 mission to Mars was the first to orbit another planet in 1971. The outer planets were first visited by Pioneer 10's encounter with Jupiter, and Pioneer 11's encounter with Saturn. The remaining gas giants were first visited by the Voyager spacecraft, one of which (Voyager 1) is the furthest object made by humankind and the first in interstellar space.[254] In addition, probes have also returned samples from comets[255] and asteroids,[256] as well as flown through the Sun's corona[257] and made fly-bys of Kuiper belt objects.[258] Six of the planets (all but Uranus and Neptune) have or had a dedicated orbiter.[259]
+See also
-“Everywhere we’ve come on this project, everyone has said we need to improve our breathing. And yoga is really a good way of doing that,” mentioned James.
+Quantum mechanics is a fundamental theory in physics that describes the behavior of nature at the scale of atoms and subatomic particles.[2]: 1.1 It is the foundation of all quantum physics including quantum chemistry, quantum field theory, quantum technology, and quantum information science.
-As a trial run, the duo trekked up Bukit Timah hill two days before their Mount Kinabalu climb.
+Classical physics, the collection of theories that existed before the advent of quantum mechanics, describes many aspects of nature at an ordinary (macroscopic) scale, but is not sufficient for describing them at small (atomic and subatomic) scales. Most theories in classical physics can be derived from quantum mechanics as an approximation valid at large (macroscopic) scale.[3]
-On the day of the climb itself, while both James and Chris were satisfied with how they have progressed over the previous month, it remains uncertain if they would be able to complete the hike up Mount Kinabalu. Chris appeared fitter than James, and James was concerned if he would become a liability for Chris.
+Quantum mechanics differs from classical physics in that energy, momentum, angular momentum, and other quantities of a bound system are restricted to discrete values (quantization); measurements of systems show characteristics of both particles and waves (wave–particle duality); and there are limits to how accurately the value of a physical quantity can be predicted prior to its measurement, given a complete set of initial conditions (the uncertainty principle).
-“I think now we are in a better place than we were before. We’ve spent two weeks of training, prepared all the gear that we need, we’ve done our yoga, we’ve worked on our breathing, and in relaxing ourselves and our bodies, and we’ve done a lot of physical training. I think after all that, we are more prepared than we initially were. On Tinké, my scores are pretty good,” said Chris.
+Quantum mechanics arose gradually from theories to explain observations that could not be reconciled with classical physics, such as Max Planck's solution in 1900 to the black-body radiation problem, and the correspondence between energy and frequency in Albert Einstein's 1905 paper, which explained the photoelectric effect. These early attempts to understand microscopic phenomena, now known as the "old quantum theory", led to the full development of quantum mechanics in the mid-1920s by Niels Bohr, Erwin Schrödinger, Werner Heisenberg, Max Born, Paul Dirac and others. The modern theory is formulated in various specially developed mathematical formalisms. In one of them, a mathematical entity called the wave function provides information, in the form of probability amplitudes, about what measurements of a particle's energy, momentum, and other physical properties may yield.
+Overview and fundamental concepts
-“My score this morning wasn’t brilliant on Tinké, but that’s not telling how my body feels, but we need to get hiking to see how the body reacts,” remarked a concerned James.
+Quantum mechanics allows the calculation of properties and behaviour of physical systems. It is typically applied to microscopic systems: molecules, atoms and sub-atomic particles. It has been demonstrated to hold for complex molecules with thousands of atoms,[4] but its application to human beings raises philosophical problems, such as Wigner's friend, and its application to the universe as a whole remains speculative.[5] Predictions of quantum mechanics have been verified experimentally to an extremely high degree of accuracy. For example, the refinement of quantum mechanics for the interaction of light and matter, known as quantum electrodynamics (QED), has been shown to agree with experiment to within 1 part in 108 for some atomic properties.
-While the ascend itself was a daunting experience, both friends pulled through and made it to the top, being possibly at the highest point one could ever be in South East Asia.
+A fundamental feature of the theory is that it usually cannot predict with certainty what will happen, but only give probabilities. Mathematically, a probability is found by taking the square of the absolute value of a complex number, known as a probability amplitude. This is known as the Born rule, named after physicist Max Born. For example, a quantum particle like an electron can be described by a wave function, which associates to each point in space a probability amplitude. Applying the Born rule to these amplitudes gives a probability density function for the position that the electron will be found to have when an experiment is performed to measure it. This is the best the theory can do; it cannot say for certain where the electron will be found. The Schrödinger equation relates the collection of probability amplitudes that pertain to one moment of time to the collection of probability amplitudes that pertain to another.
-“This was tough. This was really tough. Am I built for it? Maybe now? But a month ago and doing our training? No. All this played a role and helped me get ready for this climb,” said Chris.
+One consequence of the mathematical rules of quantum mechanics is a tradeoff in predictability between different measurable quantities. The most famous form of this uncertainty principle says that no matter how a quantum particle is prepared or how carefully experiments upon it are arranged, it is impossible to have a precise prediction for a measurement of its position and also at the same time for a measurement of its momentum.
-Using Tinké for a month, Chris and James were able to improve their Vita and Zen indices, to successfully conquer Mount Kinabalu. The journey itself will not be easy, but training with Tinké can make the process a whole lot simpler.
+Another consequence of the mathematical rules of quantum mechanics is the phenomenon of quantum interference, which is often illustrated with the double-slit experiment. In the basic version of this experiment, a coherent light source, such as a laser beam, illuminates a plate pierced by two parallel slits, and the light passing through the slits is observed on a screen behind the plate.[6]: 102–111 [2]: 1.1–1.8 The wave nature of light causes the light waves passing through the two slits to interfere, producing bright and dark bands on the screen – a result that would not be expected if light consisted of classical particles.[6] However, the light is always found to be absorbed at the screen at discrete points, as individual particles rather than waves; the interference pattern appears via the varying density of these particle hits on the screen. Furthermore, versions of the experiment that include detectors at the slits find that each detected photon passes through one slit (as would a classical particle), and not through both slits (as would a wave).[6]: 109 [7][8] However, such experiments demonstrate that particles do not form the interference pattern if one detects which slit they pass through. This behavior is known as wave–particle duality. In addition to light, electrons, atoms, and molecules are all found to exhibit the same dual behavior when fired towards a double slit.[2]
-Recommended articles:
+Another non-classical phenomenon predicted by quantum mechanics is quantum tunnelling: a particle that goes up against a potential barrier can cross it, even if its kinetic energy is smaller than the maximum of the potential.[9] In classical mechanics this particle would be trapped. Quantum tunnelling has several important consequences, enabling radioactive decay, nuclear fusion in stars, and applications such as scanning tunnelling microscopy and the tunnel diode.[10]
-Zensorium | 5 Simple Back-to-Basics Workout
+When quantum systems interact, the result can be the creation of quantum entanglement: their properties become so intertwined that a description of the whole solely in terms of the individual parts is no longer possible. Erwin Schrödinger called entanglement "...the characteristic trait of quantum mechanics, the one that enforces its entire departure from classical lines of thought".[11] Quantum entanglement enables quantum computing and is part of quantum communication protocols, such as quantum key distribution and superdense coding.[12] Contrary to popular misconception, entanglement does not allow sending signals faster than light, as demonstrated by the no-communication theorem.[12]
-Zensorium | 5 Ways to be a better runner
+Another possibility opened by entanglement is testing for "hidden variables", hypothetical properties more fundamental than the quantities addressed in quantum theory itself, knowledge of which would allow more exact predictions than quantum theory can provide. A collection of results, most significantly Bell's theorem, have demonstrated that broad classes of such hidden-variable theories are in fact incompatible with quantum physics. According to Bell's theorem, if nature actually operates in accord with any theory of local hidden variables, then the results of a Bell test will be constrained in a particular, quantifiable way. Many Bell tests have been performed, using entangled particles, and they have shown results incompatible with the constraints imposed by local hidden variables.[13][14]
-Zensorium | Why is running good for you?
+It is not possible to present these concepts in more than a superficial way without introducing the actual mathematics involved; understanding quantum mechanics requires not only manipulating complex numbers, but also linear algebra, differential equations, group theory, and other more advanced subjects.[note 1] Accordingly, this article will present a mathematical formulation of quantum mechanics and survey its application to some useful and oft-studied examples.
+Mathematical formulation
+Main article: Mathematical formulation of quantum mechanics
-Follow us on:
+In the mathematically rigorous formulation of quantum mechanics, the state of a quantum mechanical system is a vector ψ \psi belonging to a (separable) complex Hilbert space H {\mathcal {H}}. This vector is postulated to be normalized under the Hilbert space inner product, that is, it obeys ⟨ ψ , ψ ⟩ = 1 {\displaystyle \langle \psi ,\psi \rangle =1}, and it is well-defined up to a complex number of modulus 1 (the global phase), that is, ψ \psi and e i α ψ {\displaystyle e^{i\alpha }\psi } represent the same physical system. In other words, the possible states are points in the projective space of a Hilbert space, usually called the complex projective space. The exact nature of this Hilbert space is dependent on the system – for example, for describing position and momentum the Hilbert space is the space of complex square-integrable functions L 2 ( C ) {\displaystyle L^{2}(\mathbb {C} )}, while the Hilbert space for the spin of a single proton is simply the space of two-dimensional complex vectors C 2 {\mathbb C}^{2} with the usual inner product.
-Zensorium, the makers of Tinké and Being.
-Pros:
+Physical quantities of interest – position, momentum, energy, spin – are represented by observables, which are Hermitian (more precisely, self-adjoint) linear operators acting on the Hilbert space. A quantum state can be an eigenvector of an observable, in which case it is called an eigenstate, and the associated eigenvalue corresponds to the value of the observable in that eigenstate. More generally, a quantum state will be a linear combination of the eigenstates, known as a quantum superposition. When an observable is measured, the result will be one of its eigenvalues with probability given by the Born rule: in the simplest case the eigenvalue λ \lambda is non-degenerate and the probability is given by | ⟨ λ → , ψ ⟩ | 2 {\displaystyle |\langle {\vec {\lambda }},\psi \rangle |^{2}}, where λ → {\displaystyle {\vec {\lambda }}} is its associated eigenvector. More generally, the eigenvalue is degenerate and the probability is given by ⟨ ψ , P λ ψ ⟩ {\displaystyle \langle \psi ,P_{\lambda }\psi \rangle }, where P λ P_{\lambda } is the projector onto its associated eigenspace. In the continuous case, these formulas give instead the probability density.
-Cons:
+After the measurement, if result λ \lambda was obtained, the quantum state is postulated to collapse to λ → {\displaystyle {\vec {\lambda }}}, in the non-degenerate case, or to P λ ψ / ⟨ ψ , P λ ψ ⟩ {\textstyle P_{\lambda }\psi {\big /}\!{\sqrt {\langle \psi ,P_{\lambda }\psi \rangle }}}, in the general case. The probabilistic nature of quantum mechanics thus stems from the act of measurement. This is one of the most difficult aspects of quantum systems to understand. It was the central topic in the famous Bohr–Einstein debates, in which the two scientists attempted to clarify these fundamental principles by way of thought experiments. In the decades after the formulation of quantum mechanics, the question of what constitutes a "measurement" has been extensively studied. Newer interpretations of quantum mechanics have been formulated that do away with the concept of "wave function collapse" (see, for example, the many-worlds interpretation). The basic idea is that when a quantum system interacts with a measuring apparatus, their respective wave functions become entangled so that the original quantum system ceases to exist as an independent entity. For details, see the article on measurement in quantum mechanics.[17]
-The Worms series of games have always been a bit off-kilter. In its initial incarnation as a time-sensitive 2D turn-based strategy game, Worms pitted cute little animated earth-munchers against one another with a vast arsenal of weapons and power-ups amid bright, colorful environments that got blown to bits in the process. As fans eagerly anticipate the first 3D incarnation of the series next year, Team 17 have created an unusual spin-off to keep us quite busy and amused: the rather addictive and hyperactive combat puzzle game, Worms Blast.
+The time evolution of a quantum state is described by the Schrödinger equation:
-Bust-A-Worm?
+ i ℏ d d t ψ ( t ) = H ψ ( t ) . {\displaystyle i\hbar {\frac {d}{dt}}\psi (t)=H\psi (t).}
-Although Blast has the look of a Worms game, the gameplay is totally different. It's more like the puzzle-flavored Bust-a-Move, which involves shooting bubbles at puzzle pieces falling from the sky. In this game, you control a little boat-bound character armed with a bazooka that fires color-coded missiles. You can move left and right, tilt the cannon up and down to alter your trajectory, and collect other weapons and power-up crates, released by destroying puzzle pieces with a missile of the same color.
+Here H H denotes the Hamiltonian, the observable corresponding to the total energy of the system, and ℏ \hbar is the reduced Planck constant. The constant i ℏ i\hbar is introduced so that the Hamiltonian is reduced to the classical Hamiltonian in cases where the quantum system can be approximated by a classical system; the ability to make such an approximation in certain limits is called the correspondence principle.
-Since your character is in a boat, you also have to contend with rising tides, torrential weather conditions, sea monsters, and other hazards of the deep zooming around as you fight for survival. In most of the challenges, puzzle pieces gradually descend towards the water regardless of whether or not you shoot at them, so it's important to keep clearing the puzzle pieces lest you get pushed underwater. In addition, rising tides must be quelled by gathering falling stars, which are also among the puzzle pieces. If your aim is terribly off, and you hit nothing at all, cartoon items such as anvils, refrigerators, and cannonballs will fall from the sky, geared towards bonking you on the head and damaging your health. It's a far cry from the whole "you-take-a-turn, I-take-a-turn" format of the original games.
+The solution of this differential equation is given by
-Worms Blast offers a number of gameplay modes. There are numerous full-screen challenges where you face the puzzles alone, as well as a number of head-to-head modes where you play via split screen against another person or the CPU. It's a good idea to play through some of the single-player challenges first -- they serve as a sort of boot camp, where you'll learn all the basics of puzzle combat (as odd as that may sound). As you progress in these single-player missions, you'll occasionally unlock new modes.
+ ψ ( t ) = e − i H t / ℏ ψ ( 0 ) . {\displaystyle \psi (t)=e^{-iHt/\hbar }\psi (0).}
-In one challenge, you've got six missiles and six tough-to-hit targets, but all the time in the world to hit them. In another, UFOs (composed of puzzle pieces) zoom towards the water and you've got to hit as many as possible directly in the belly before the timer runs out. Another challenge involves hitting rapidly descending targets on alternate sides of the screen in quick succession, adding a couple of seconds to the timer with each successful shot. There are simply too many variations in each mode to catalog here, which is a good thing. Some of the challenges are frustrating, but they're considerably varied and ultimately rewarding.
+The operator U ( t ) = e − i H t / ℏ {\displaystyle U(t)=e^{-iHt/\hbar }} is known as the time-evolution operator, and has the crucial property that it is unitary. This time evolution is deterministic in the sense that – given an initial quantum state ψ ( 0 ) \psi (0) – it makes a definite prediction of what the quantum state ψ ( t ) \psi(t) will be at any later time.[18]
+Fig. 1: Probability densities corresponding to the wave functions of an electron in a hydrogen atom possessing definite energy levels (increasing from the top of the image to the bottom: n = 1, 2, 3, ...) and angular momenta (increasing across from left to right: s, p, d, ...). Denser areas correspond to higher probability density in a position measurement. Such wave functions are directly comparable to Chladni's figures of acoustic modes of vibration in classical physics and are modes of oscillation as well, possessing a sharp energy and thus, a definite frequency. The angular momentum and energy are quantized and take only discrete values like those shown. (As is the case for resonant frequencies in acoustics.)
-Timed target shooting is one of many intense challenges you'll face in puzzle mode.
+Some wave functions produce probability distributions that are independent of time, such as eigenstates of the Hamiltonian. Many systems that are treated dynamically in classical mechanics are described by such "static" wave functions. For example, a single electron in an unexcited atom is pictured classically as a particle moving in a circular trajectory around the atomic nucleus, whereas in quantum mechanics, it is described by a static wave function surrounding the nucleus. For example, the electron wave function for an unexcited hydrogen atom is a spherically symmetric function known as an s orbital (Fig. 1).
-Your progress in the main puzzle mode gets saved along the way, so once you pass a really tough challenge, you have the option of never looking back. You can also return to a challenge you enjoyed, or continue the remaining challenges with any character of your choice. The characters (which oddly enough, aren't limited to worms) have varying thresholds for damage, and their boats vary in terms of size and speed. There's also a tournament mode, in which you've got to survive for as long as possible during specific challenges, most of which are subtle variations of the ones introduced in the puzzle mode.
-Q:
+Analytic solutions of the Schrödinger equation are known for very few relatively simple model Hamiltonians including the quantum harmonic oscillator, the particle in a box, the dihydrogen cation, and the hydrogen atom. Even the helium atom – which contains just two electrons – has defied all attempts at a fully analytic treatment.
-как передать json на сервер
+However, there are techniques for finding approximate solutions. One method, called perturbation theory, uses the analytic result for a simple quantum mechanical model to create a result for a related but more complicated model by (for example) the addition of a weak potential energy. Another method is called "semi-classical equation of motion", which applies to systems for which quantum mechanics produces only small deviations from classical behavior. These deviations can then be computed based on the classical motion. This approach is particularly important in the field of quantum chaos.
-Здравствуйте, у меня есть 2 json объекта, находящиеся в javascript. Каким образом мне хранить их на сервере, файлами или в запросе передавать? Пожалуйста, с примерами кода.
-Бэкэнд на ASP.NET 4.5
+# Code
-A:
+NotReached:
-На клиенте конвертировать его в string:
-myStringObj = JSON.stringify(myObj);
+ addi.b #$10,d2
+ add.w d0,d1
+ cmp.w d1,d4
+ bgt.s NotReached
+ sub.w d2,d1
+ subi.w #$1000,d3
+ bpl.s NotReached
+ move.w d1,d0
+ swap d0
+ move.w d3,d0
-Дальше отправить его любым способом на сервер (xhr, form submit);
-Процесс здесь
-А как хранить вам виднее, либо база данных, либо статичный json, зависит от того что делаете
+ sep #%00100000 ;8 bit accumulator
+ ldx #4 ;modifying 5 locations
+ ;
+ loop lda $ab1234,x ;load
+ inc a ;increment
+ sta $ab1234,x ;store
+ dex
+ bpl loop ;next
-Category: Console
-We all know that Microsoft is working on a certain project called the Project Scorpio and that it’s just the next generation of the Xbox console. It was back in 2016, Microsoft had announced at the E3 about their next project codenamed Project Scorpio. Back then they announced that the console is set to be rolled out in 2017. It’s already 2017, and we haven’t heard anything much about the release date of the Xbox 2 until now. There are fresh rumors surrounding the Xbox Scorpio release date, and we are going to discuss it in this post.
+ phb ;save current data bank
+ sep #%00110000 ;8 bit registers
+ lda #$ab ;target bank
+ pha ;push it to the stack & pull it...
+ plb ;into DB, making it the default bank
+ ldx #4 ;modifying 5 locations
+ ;
+ loop inc $1234,x ;effectively INC $AB1234,X
+ dex
+ bpl loop ;next
+ ;
+ plb ;restore previous bank
-The current console the Xbox One has been launched back on November 22, 2013, in the US and clearly ended up winning hearts of people. So Xbox fans really got excited when they first heard of the project. But the only question that has been on people’s minds had been that when exactly does Microsoft plan to launch their products. Of course, they said the Xbox 2 Release Date in 2017 but we are already halfway through the year, already five months into the year and there is no real confirmation. Fans have been wondering is if the release date has been postponed to which we now have an answer.
+ sei ;IRQs off
+ wai ;wait for interrupt
+ lda via001 ;start of interrupt handler
-The new rumor is basically good news for fans who can pretty much hope to pick up the console this Christmas. This is just the sort of news we had been waiting for since the time the project was announced. This is the rumor that has emerged right before the 2017 E3 gaming expo. And the best fact is that the news comes from none other than the Xbox boss Phil Spencer, who when asked on Twitter is there is a change in the Xbox 2 release date, replied saying this: “Schedule looks very good right now, no issues.” This is what has prompted fans and tech gurus to believe that the console will be coming out in the second of the year and the most convenient time is the holiday season of Christmas, which is a great time to send your product sales soaring.
-We are expecting that Microsoft will announce the date of the release at the E3 gaming expo and there are expectations that they might also end up revealing the price of the console so that people are pretty much equipped to handle the pocket burn when Xbox 2 actually hits the market shelves.
+ #!/bin/bash
+ TARGET_DIR=("$@")
+ [ "x$1" == "x" ] && TARGET_DIR=(".")
+ function confirmDeletion() {
+ local confirm=""
+ until [ "x$confirm" == 'xy' ] || [ "x$confirm" == 'xn' ]
+ do
+ read -ep " Delete [y/n]: " confirm
+ confirm=$(echo "$confirm" | tr [:upper:] [:lower:])
+ done
+ [ "x$confirm" == 'xy' ]
+ }
+ function deleteWithConfirmation() {
+ for file in "${@}"
+ do
+ if rm "$file"; then
+ echo " OK: $file"
+ else
+ echo " FAIL: $file"
+ fi
+ done
+ }
+ for i in {'*~','a.out','*.o','*.gch','*nppdf32Log*'}
+ do
+ echo "Files matching: $i"
+ FILES=()
+ while read -rd '' file
+ do
+ FILES+=("$file")
+ echo " $file"
+ done < <(find "${TARGET_DIR[@]}" -depth -iname "$i" -print0)
+ if [ "x${FILES[*]}" != "x" ]; then
+ if confirmDeletion; then
+ deleteWithConfirmation "${FILES[@]}"
+ else
+ echo " Skipping"
+ fi
+ fi
+ done
-There are a lot of talks going on surrounding the Xbox 2 and a lot of rumors as to what new things that console will be bringing on the table. There are reports that there’ll be Voice Control Settings which will make the console a serious winner in the gaming industry. People expect the console to come with everything that the new and advanced technology has to offer in this modern day time. There are also talks that the Xbox 2 will be featuring custom game specific controllers that’ll be great, to say the least. And folks, this is all that we know about the upcoming console, but there is no official confirmation regarding these, so you should really take these rumors with a pinch of salt.
-Katabexin, Medichrom
-The drug brand named Katabexin contains generic salt-Betahistine Hydrochloride and is manufactured by Medichrom.Katabexin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- N07CA01-Betahistine.
+Return the open file descriptor to the calling function via the eight bit accumulator by overwriting the appropriate register stack frame element:
-Generic Salts
+ sep #%00100000 ;select 8 bit accumulator
+ lda #0 ;clear...
+ xba ;.B
+ lda filedes ;get file descriptor, ...
+ rep #%00100000 ;select 16 bit accumulator &...
+ sta reg_a,s ;overwrite .C's stack copy
-Betahistine Hydrochloride
+When the accumulator is pulled it will contain the value that was in filedes.
-Available types of drugs
+Flag an error by setting the carry bit in SR:
-N / A
+ sep #%00100000 ;select 8 bit accumulator
+ lda reg_sr,s ;stack copy of SR
+ ora #%00000001 ;set carry bit &...
+ sta reg_sr,s ;rewrite
-Medical categories
+Flag a successful operation by clearing the carry bit in SR:
-Human DrugAntivertigo drugs
+ sep #%00100000 ;select 8 bit accumulator
+ lda reg_sr,s ;stack copy of SR
+ and #%11111110 ;clear carry bit &...
+ sta reg_sr,s ;rewrite
-Usage-Diseases
+class PromptFormat:
-N07CA01-BetahistineManufacturers
+ botname = "Chatbort"
+ username = "User"
-Medichrom
+ def __init__(self):
+ pass
-More Drugs
+ #
-The drug brand named Kasmucol contains generic salt-Acebrophylline and is manufactured by Teva.Kasmucol is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+ def default_system_prompt(self):
+ raise NotImplementedError
-Generic Salts
+ def first_prompt(self):
+ raise NotImplementedError
-The drug brand named Kas contains generic salt-Preparation for Enteral Nutrition and is manufactured by Nutricia-Bago.Kas is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+ def subs_prompt(self):
+ raise NotImplementedError
-Ge...
+ def stop_conditions(self, tokenizer):
+ raise NotImplementedError
-The drug brand named Kastair EZ contains generic salt-Montelukast Sodium and is manufactured by Pediatrica.Kastair EZ is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukast.
+ def encoding_options(self): # (add_bos, add_eos, encode_special_tokens)
+ raise NotImplementedError
-The drug brand named Kast contains generic salt-Montelukast and is manufactured by RND Laboratories.Kast is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukast.
+ def print_bot_name(self):
+ return False
-Gen...
+ def print_extra_newline(self):
+ return False
-The drug brand named Kastorion contains generic salt-Montelukast Sodium and is manufactured by OEP Philippines.Kastorion is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- R03DC03-Montelukas...
-The drug brand named Katabios contains generic salt-Multivitamins and is manufactured by Specialita Igienico Terapeutiche.Katabios is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- A11BA-Mu...
+class PromptFormat_raw(PromptFormat):
-The drug brand named Katagrip contains generic salt-Acetaminophen and is manufactured by Angelini.Katagrip is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+ description = "Model-agnostic mode simulating a raw chatlog"
-Generic Salts
+ def __init__(self):
+ super().__init__()
+ pass
-The drug brand named Katapekt contains generic salt-Ammonium Chloride and is manufactured by Vitabalans.Katapekt is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- N02AA59-Codeine, combinati...
+ def default_system_prompt(self):
+ return \
+ f"""This is a conversation between a helpful AI assistant named {self.botname} and a """ + \
+ (f"""user named {self.username}.""" if self.username != "User" else """user.""")
-The drug brand named Katar contains generic salt-Corynebacterium Pseudodiphtheriae and is manufactured by Istituto Sieroterapico Berna.Katar is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)-...
+ def first_prompt(self):
+ return \
+ f"""<|system_prompt|>\n{self.username}: <|user_prompt|>\n{self.botname}:"""
-The drug brand named Katasuccin contains generic salt-Succinic Acid and is manufactured by Unidentified Pharmaceutical Company.Katasuccin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- A...
+ def subs_prompt(self):
+ return \
+ f"""{self.username}: <|user_prompt|>\n{self.botname}:"""
-The drug brand named Katen contains generic salt-Mexiletine Hydrochloride and is manufactured by Zentiva.Katen is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- C01BB02-Mexiletine.
+ def stop_conditions(self, tokenizer):
+ return \
+ [self.username + ":",
+ self.username[0:1] + ":",
+ self.username.upper() + ":",
+ self.username.lower() + ":",
+ tokenizer.eos_token_id]
-The drug brand named Kathro contains generic salt-Cholesterol and is manufactured by Unidentified Pharmaceutical Company.Kathro is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC....
+ def encoding_options(self):
+ return False, False, False
-The drug brand named Katin contains generic salt-Bile Salts and is manufactured by Instituto Sanitas.Katin is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- ATC.
+ def print_bot_name(self):
+ return True
-Generic Salts
+########################################################
-The drug brand named Kativ N contains generic salt-Vitamin K1 (Phytonadione) and is manufactured by Unidentified Pharmaceutical Company.Kativ N is mainly associated with symptoms and indications-The International Classification of Diseases (IC...
+class PromptFormat_llama(PromptFormat):
-The drug brand named Katogel contains generic salt-Emollient and is manufactured by Deverge Medicina e Medicalizzazione.Katogel is mainly associated with symptoms and indications-The International Classification of Diseases (ICD)- D02AX-Other...
-The present disclosure relates to computer systems, and in particular to managing file access to applications that are deployed in a virtualized computer environment.
-Virtualized computer environments, which may include cloud computing systems, composite information technology systems and computer cluster systems, are used to provide computer resources or other computing resources to end users. In a cloud computing environment, the physical hardware configuration is hidden from the end user. Cloud computing systems may include servers, network storage devices, routers, gateways, communication links, software (e.g., applications, operating systems, web services, etc.), and other devices. However, because the physical hardware and software platforms on which cloud computing system is implemented are hidden within a “cloud,” they can be managed, upgraded, replaced or otherwise changed by a system administrator without the customer being aware of or affected by the change.
-A computer cluster, also referred to as a cluster, may be considered as a type of cloud computing environment and may include a set of loosely connected computers that may be connected to one another via local networks.
-In a typical cloud computing environment, applications may be executed on virtual machines or appliances, which are guest operating systems installed within a host system and an optional preset configuration and structure (e.g., combination of operating system and web server). Virtual Machines are typically implemented with either software emulation or hardware virtualization, or both. A single hardware and/or software platform may host a number of virtual machines, each of which may have access to some portion of the platform's resources, such as processing resources, storage resources, etc.
-Because different applications that are deployed in a cloud computing environment may require access to files, such files may not be consistent among the different applications and/or instances of applications unless a shared location is provided, which may impose unwanted additional complexity to the installation and maintenance of the application. Additionally, unexpected outcomes may occur in the event that two different applications and/or instances of applications access the same file in an overlapping time period. Yet further, synchronization of files used by more than one application and/or instance may be problematic in a cloud computing environment.
-Q:
+ description = "Llama-chat, Llama2-chat and Mistral-instruct models"
-Insert a row with default value column in sqlalchemy
+ def __init__(self):
+ super().__init__()
+ pass
-I am writing a program which uses a database with sqlalchemy as client.
-Here is one of my tables
-class DownloadRecord(Base):
- __tablename__ = "DownloadRecords"
- id = Column("Id", Integer, primary_key=True, autoincrement=True)
+ def default_system_prompt(self):
+ return \
+ """You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. """ + \
+ """Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. """ + \
+ """Please ensure that your responses are socially unbiased and positive in nature."""
- download_name = Column("DownloadName", Unicode, nullable=False)
- download_date = Column(
- "DownloadDate", DateTime, default=datetime.datetime.utcnow, nullable=False
- )
+ def first_prompt(self):
+ return \
+ """[INST] <>\n<|system_prompt|>\n<>\n\n<|user_prompt|> [/INST]"""
-the column download_date is defined with a default value, both here and in the server side table. Here is the definition of the column on the mssql server
-DownloadDate DATETIME NOT NULL DEFAULT GETDATE()
+ def subs_prompt(self):
+ return \
+ """[INST] <|user_prompt|> [/INST]"""
-however I try to add the record DownloadRecord(download_name="new_download_name") and I get the following exception.
+ def stop_conditions(self, tokenizer):
+ return \
+ [tokenizer.eos_token_id]
-sqlalchemy.exc.IntegrityError: (pyodbc.IntegrityError) ('23000',
- "[23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot
- insert the value NULL into column 'DownloadDate', table
- 'DownloadRecords'; column does not allow nulls. INSERT fails. (515)
- (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client
- 11.0][SQL Server]The statement has been terminated. (3621)") [SQL: INSERT INTO [DownloadRecords] ([DownloadName], [DownloadDate]) OUTPUT
- inserted.[Id] VALUES (?, ?)] [parameters: ("new_download_name", None)]
+ def encoding_options(self):
+ return True, False, False
-I also tried to make this column nullable but When I added the new row the DownloadDate column was Null.
-How do I make it automatically use the default value?
+ def print_extra_newline(self):
+ return True
-A:
-The problem is incompatibility between the type of the column DownloadDate and the type of the value you give as its default value on the client side.
-The type you used is DateTime (on the server side as well as the client side).
-However, in the following code:
-Column("DownloadDate", DateTime, default=datetime.datetime.utcnow, nullable=False)
+ def build_attn_mask(self, batch_size, seq_len, past_len, input_mask, device):
-the return value of datetime.datetime.utcnow() is a timezone aware object, while SQL Server's DateTime isn't.
-I see two possible solutions:
+ if input_mask is None and seq_len == 1: return None
-Change the default value to a callable which returns a datetime object which is not timezone aware.
-Change the type of the DownloadDate column to a timezone aware type. You can use SQL Server's datetimeoffset on the server side, and SQLAlchemy's DATETIMEOFFSET on the client side.
+ if isinstance(past_len, tuple):
-Take a look at Microsoft's docs on date and time types for the full reference.
-On another note, consider moving to a code first design, where you define your schema in one place.
+ attn_masks = []
+ for i in range(len(past_len[1])):
-Live and let love /
+ attn_mask = torch.zeros((1, 1, seq_len, past_len[1][i] + seq_len), dtype = torch.float16, device = device)
+ attn_mask_triu = torch.triu(torch.full((seq_len - 1, seq_len - 1), -65504.))
+ attn_mask[:, :, : seq_len - 1, past_len[1][i] + 1: past_len[1][i] + seq_len] = attn_mask_triu
-"Though Willow Pierce has moved forward since her husband died two years ago, she can't ignore her sixth sense that Jack is alive. When newcomer Con Russo comes to town, Willow is convinced he's Jack. She'd never forget his eyes. Willow is determined to learn the truth about Con's identity-even... Full description
-The fate of chlorine and organic materials in swimming pools.
-The fate of organic nitrogen and carbon introduced into a swimming pool by pool users has been studied using a 2.2 m(3) model pool. The study made use of a body fluid analogue (BFA), containing the primary endogenous organic amino compounds, and a soiling analogue represented by humic acid (HA). The system was used to examine the effect of organic loading and organic carbon (OC) sources (i.e. amino or HA) on the levels and speciation of the key chlorinated disinfection by-products of trihalomethanes (THMs) and chloramines under operating conditions representative of those employed on a full-scale pool. Results revealed OC, chloramines and THMs to all attain steady-state levels after 200-500 h of operation, reflecting mineralisation of the dosed OC. Steady-state levels of OC were roughly linearly dependent on dose rate over the range of operational conditions investigated and, as with the chloramine levels recorded, were in reasonable agreement with those reported for full-scale pools. THM levels recorded were somewhat lower than those found in real pools, and were dependent on both on pH carbon source: the THM formation propensity for the soling analogue was around eight times than of the BFA. Of the assayed by-products, only nitrate was found to accumulate, accounting for 4-28% of the dosed amino nitrogen. Contrary to previous postulations based on the application of Henry's Law, only insignificant amounts of the volatile by-products were found to be lost to the atmosphere.
-Q:
+ if input_mask is not None:
+ min_mask_width = min(input_mask[i].shape[-1], seq_len + past_len[1][i])
+ input_mask_part = safe_move_tensor(input_mask[i][:, :min_mask_width], attn_mask.device)
+ input_mask_part = input_mask_part.unsqueeze(1).unsqueeze(2)
+ attn_mask[:, :, :, :min_mask_width] = torch.minimum(attn_mask[:, :, :, :min_mask_width], input_mask_part)
-textbf doesn't work with txfonts package
+ attn_masks.append(attn_mask)
-If I compile this, it won't work - the text won't be bold.
-\documentclass[9pt, a4paper]{extarticle}
-\usepackage[utf8]{inputenc}
-\usepackage[IL2]{fontenc}
-\usepackage{txfonts}
-\begin{document}
-\textbf{Something}
-\end{document}
+ return attn_masks
-If I remove the package usage, it'll work, but I do need it. What should I do?
+ else:
-A:
+ attn_mask = torch.zeros((batch_size, 1, seq_len, past_len + seq_len), dtype = torch.float16, device = device)
+ attn_mask_triu = torch.triu(torch.full((seq_len - 1, seq_len - 1), -65504.))
+ attn_mask[:, :, : seq_len - 1, past_len + 1: past_len + seq_len] = attn_mask_triu
-The log file tells you
-LaTeX Font Warning: Font shape `IL2/txr/m/n' undefined
-(Font) using `IL2/cmr/m/n' instead on input line 5.
+ if input_mask is not None:
+ min_mask_width = min(input_mask.shape[-1], seq_len + past_len)
+ input_mask_part = safe_move_tensor(input_mask[:, :min_mask_width], attn_mask.device)
+ input_mask_part = input_mask_part.unsqueeze(1).unsqueeze(2)
+ attn_mask[:, :, :, :min_mask_width] = torch.minimum(attn_mask[:, :, :, :min_mask_width], input_mask_part)
-LaTeX Font Warning: Font shape `IL2/txr/bx/n' undefined
-(Font) using `IL2/txr/m/n' instead on input line 6.
+ return attn_mask
-meaning that txfonts doesn't support the IL2 encoding (just a few fonts do) and the standard Computer Modern font is used instead.
+ We have to develop a Java program to calculate the sum of n natural numbers. Sum of natural number N as given as sum = 1+2+3+….+N
-Vision
+Examples:-
+1+2+3+4+5 = 15
+1+2+3+4+5+6+7+8+9+10 = 55
-Our Vision
+Procedure to develop a method to find the sum of N natural numbers in Java,
-Develop and sustain a nationally recognized model for community fitness and health;
+ Take the N value.
+ Declare an iterator variable and initialize it with 1 because natural numbers start with 1.
+ Add iterator variable value into the sum variable
+ Increase the value of the iterator variable by 1
+ Repeat 3 and 4 steps until the number remains greater than the iterator variable
-Maintain a wellness campus that serves more than 3,000 diverse members with integrative programming;
+The time complexity of this procedure is O(n).
-Operate with fiscal and organizational sustainability.
+import java.util.Scanner;
-Vermont’s future prosperity depends on our ability to provide citizens with a solid foundation of health and physical fitness. A healthy population becomes the basis for community and economic development, as healthy citizens are also productive employees, contributing community members, nurturing parents and motivated participants in our education system. The key to a healthy population is a multi-dimensional fitness environment that provides opportunities for a social and family experience, skill building through sports, and sustainable pursuit of fitness or athletic performance goals.
+public class NaturalNumberSum {
-Vermonters have had a long standing commitment to the cultivation of our landscapes for recreational use, to thoughtful investment in an innovative recreation business community, and to the design of cutting edge equipment and programs designed to engage individuals at all ages and abilities in health and physical fitness and the pursuit of athletic performance. The Confluence–as a community sports center--has a unique role to play in securing access for adults, youth and children to these investments and innovations that can overcome the challenges in our community. Together, we can work to forward a vision of a healthy population, a rewarding recreation legacy and sustainable economic future for Vermonters.
+ // method to find sum of N natural numbers
+ public static int naturalNumberSum(int number){
-88 N.Y.2d 925 (1996)
-669 N.E.2d 1111
-646 N.Y.S.2d 789
-The People of the State of New York, Respondent,
-v.
-John A. Ceresoli, Appellant.
-Court of Appeals of the State of New York.
-Argued June 6, 1996.
-Decided June 28, 1996.
-Frank Policelli, Utica, for appellant.
-Michael A. Arcuri, District Attorney of Oneida County, Utica (Timothy P. Fitzgerald of counsel), for respondent.
-Chief Judge KAYE and Judges SIMONS, TITONE, BELLACOSA, SMITH, LEVINE and CIPARICK concur.
-MEMORANDUM.
-The order of the Appellate Division should be affirmed.
-*926Defendant was charged with criminal possession of a forged instrument and with the theft of $3,500 from the Toccolana Club, a private social club in Rome, New York. After his conviction for grand larceny in the fourth degree (Penal Law § 155.30), defendant moved pursuant to CPL 330.30 to set aside the verdict on the ground of juror misconduct involving a single seated juror. During voir dire, the juror, a resident of Rome, was asked whether he was "familiar with members of the Toccolano Club." The juror responded: "I just know where it is, not really, no." It was subsequently established that the juror had decades earlier himself been a nominal member of the club, and two of his relatives were or had been members.
-After a hearing on defendant's motion, the trial court found there was no improper conduct on the part of the juror, and further that the juror's conduct had not "affected a substantial right of the defendant" (CPL 330.30 [2]). The Appellate Division affirmed. The trial court's undisturbed factual finding has support in the record and, like the alleged excessiveness of defendant's sentence, is beyond the scope of our review.
-Order affirmed in a memorandum.
+ int i = 1; // iterator variable
+ // variable to store sum value
+ int sum = 0;
-Kennedy Says He’d Consider a Senate Run If Warren Tapped for VP
+ // loop to repeat the process
+ while (i<=number) {
-A Kennedy in the Senate? Surely you jest.
+ // add into sum value
+ sum = sum + i;
+ // increase iterator variable
+ i++;
+ }
-Get a compelling long read and must-have lifestyle tips in your inbox every Sunday morning — great with coffee!
+ // return sum value
+ return sum;
+ }
-It’s been seven years since we’ve seen a Kennedy in the Senate. With a little nudge from presumptive Democratic presidential nominee Hillary Clinton, that could soon change.
+ public static void main(String[] args) {
-Congressman Joe Kennedy III told WCVB’s Janet Wu during a Thursday night taping of her show, On the Record, that he would consider a run for Elizabeth Warren’s Senate seat in the event she’s tapped to be Clinton’s running mate this November.
+ // declare variables
+ int number = 0;
+ int sum = 0;
-Ted Kennedy won the seat in a special election in 1962 after his brother, John F. Kennedy, was elected president. He held the seat for 47 years until his death in 2009. Joe Kennedy worked on his great-uncle’s re-election campaign in 2006 before enrolling in Harvard Law School, where Warren taught for nearly 20 years.
+ // create Scanner class object
+ Scanner scan = new Scanner(System.in);
-Cosmo centerfold Scott Brown won the seat in a 2010 special election, defeating Attorney General Martha Coakley. Brown served for just two years before he was ousted by Warren, who became the Bay State’s first female senator. After a failed Senate campaign in New Hampshire, Brown now spends his time calling in to Herald Radio and following Donald Trump around.
+ // read input
+ System.out.print("Enter N value:: ");
+ number = scan.nextInt();
-Wu’s interview with Kennedy airs Sunday at 11 a.m.
-Characterization of the limited specificity of antigen recognition in earthworms.
-Parenteral administration of foreign proteins results in earthworms in significantly increased levels of the antigen-binding protein (ABP). The earthworms (Lumbricus terrestris and Eisenia foetida; Oligochaeta, Annelida) were stimulated with different proteins and the ABP response was followed with an anti-ABP monoclonal antibody and in ligand assay with biotin conjugates of all proteins used for stimulation. ABP levels are increased after the stimulation with different proteins irrespective of the size and extent of glycosylation. Molar mass of the ABP molecules was always the same, 56 kDa in L. terrestris and 60 kDa in E. foetida. The level of the specificity is considerably lower in comparison with immunoglobulins since ABP reacts not only with the protein used for stimulation but also, though to lesser extent, with related proteins.
-getFromName("_rels/.rels"));
- foreach ($relations->Relationship as $rel) {
- if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) {
- // Found core properties! Read in contents...
- $contents = simplexml_load_string(
- $package->getFromName(dirname($rel["Target"]) . "/" . basename($rel["Target"]))
- );
+ Sum of digits of a number
+ The sum of even digits in a number
+ Sum of odd digits in a number
+ Sum of first & last digit of a number
+ The Sum of Digits Until Single Digit
- foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORE) as $child) {
- $coreProperties[$child->getName()] = (string)$child;
- }
- foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) as $child) {
- $coreProperties[$child->getName()] = (string)$child;
- }
- foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORETERMS) as $child) {
- $coreProperties[$child->getName()] = (string)$child;
- }
- }
- }
+We can also use for loop instead of using a while loop. The for loop is also a pre-test loop, where first of all initialization expression is evaluated then the condition is checked and if the condition is true then only the statements of the for loop are executed.
- return $coreProperties;
- }
+public static int naturalNumberSum(int number){
- /**
- * Determine absolute zip path
- *
- * @param string $path
- * @return string
- */
- protected function absoluteZipPath($path)
- {
- $path = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $path);
- $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
- $absolutes = [];
- foreach ($parts as $part) {
- if ('.' == $part) {
- continue;
- }
- if ('..' == $part) {
- array_pop($absolutes);
- } else {
- $absolutes[] = $part;
- }
- }
+ int sum = 0;
+
+ for(int i=1; i<=number; i++)
+ sum+=i;
+
+ return sum;
+ }
+
+Or,
+
+public static int naturalNumberSum(int number){
+
+ int sum = 0;
+
+ for(int i=1; ; sum+=i, i++)
+ if(i>number) return sum;
- return implode('/', $absolutes);
- }
}
-AE Works Awarded Design to Upgrade Spinal Cord Injury Center
+The time complexity of all above methods are O(n).
+Sum of Natural Numbers in Java without using the loop
-AE Works to lead design efforts that target expansion of one of the Country’s largest Spinal Cord Injury Centers
+We can also do the same work without using the loop. The formula for this operation,
-Pittsburgh-headquartered architectural and engineering firm, AE Works was recently awarded a contract to provide design and engineering services to renovate and expand the existing Spinal Cord Injury & Disorders Center of Excellence (SCI&D COE) at the Hunter Holmes McGuire VA Medical Center in Richmond, Virginia. Providing critical care for veterans with spinal cord injuries, the Richmond facility is one of the largest of the 25 spinal cord injury centers in the VA Medical Center System.
+Sum = n * (n+1) / 2;
-Anticipating future requirements, the VA Medical Center staff embarked on proactive planning effort to meet the needs of providing critical healthcare services to a growing veteran population throughout five states and the District of Columbia. As a result of these planning efforts, this project will renovate targeted areas of the existing facility and also provide a new 20,000-SF addition to optimize delivery of these specialized clinical services.
+Example:-
+Sum of first 10 natural numbers = 10*(10+1)/2 = 10*11/2 = 5*11 = 55
-Supporting the Department of Veterans Affairs’ commitment to a patient-centered care model that focuses on providing world-class care in a welcoming, healing environment, the design will also focus on infrastructure efficiency, enhancing the patient experience and enriching collaboration opportunities among the hospital’s many clinicians, instructors and researchers.
+It is the best way to find the sum of natural numbers. The time complexity of this method is O(1).
-As a service-disabled veteran-owned small business, projects such as this expansion are especially important to AE Works.
+import java.util.Scanner;
-“Our work centers around people and the design of healthcare facilities brings that even more into focus. We feel very fortunate to be a part of this project and the opportunity to have a part in improving healthcare for Veterans,” shares Michael Cherock, PE, AE Works President and Owner.
+public class NaturalNumberSum {
-For more information on AE Works, please visit www.ae-works.com or call Carly Khanna at 301-332-9780.
+ // method to find sum of N natural numbers
+ public static int naturalNumberSum(int number){
+ return number*(number+1)/2;
+ }
-AE Works Ltd., headquartered in Pittsburgh, PA with satellite offices in State College, PA and Washington DC, specializes in Architecture, MEP Engineering, Telecommunication and Security design services. AE Works Ltd. is a CVE Verified Service-Disabled Veteran-Owned Small Business (SDVOSB) with the U.S. Department of Veteran Affairs.
+ public static void main(String[] args) {
-About The Western PA Healthcare News Team
+ // declare variables
+ int number = 0;
+ int sum = 0;
-Throughout the year, our writers feature fresh, in-depth, and relevant information for our audience of 40,000+ healthcare leaders and professionals. As a healthcare business publication, we cover and cherish our relationship with the entire health care industry including administrators, nurses, physicians, physical therapists, pharmacists, and more. We cover a broad spectrum from hospitals to medical offices to outpatient services to eye surgery centers to university settings. We focus on rehabilitation, nursing homes, home care, hospice as well as men’s health, women’s heath, and pediatrics.
-freedom
+ // create Scanner class object
+ Scanner scan = new Scanner(System.in);
-April 22, 2011
+ // read input
+ System.out.print("Enter N value:: ");
+ number = scan.nextInt();
-the meds i’m on make it a little difficult to focus,
-but here’s what i’ll say:
+ // Calculate the sum value
+ sum = naturalNumberSum(number);
-whatever you feel about healthcare,
-who gets it, how it’s paid for, and how we deal with it here,
-all i know is that the healthcare system did not fail me.
-without it, i would be dead now.
+ // display result
+ System.out.println("Sum = "+sum);
-there are several instances where i came close to it.
+ // close Scanner class objects
+ scan.close();
+ }
+}
-don’t get me wrong,
-it was fucking hell (evidence below).and it still is since i’m exactly done with everything.
-there were times where i felt ignored, forgotten,
-like no one would listen to me.
+Using recursion
+
+We already developed java program to find the sum of the natural number using for loop, or while loop, or without using the loop. Now we will find the same using the recursion technique. In Recursion, We divided the big problems into smaller problems or sub-problems.
+
+Sum of N natural numbers given as 1+2+….+(n-1)+n. So, the problem can be divided as n + ( (n-1) +… + 2 + 1 )
+
+General case for finding the sum of natural number => sum(n) = n + sum(n-1); Similarly, the base case for finding the sum of natural number => sum(0) = 0; or sum(1) = 1;
+
+import
+
+module jtransmissiongatetb;
+ wire y;
+ reg a,control;
+ jtransmissiongate jtgate(y,control,a);
+ initial
+ begin
+ $display ("RESULT\ta\ty");
+
+ a = 0; control = 0; # 50; // Initial value is set
+ if ( y === 1'bz ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+
+ a = 0; control = 1; # 50; // Initial value is set
+ if ( y === 0 ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+
+ a = 1; control = 0; # 50; // Another value
+ if ( y === 1'bz ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+
+ a = 1; control = 1; # 50; // Another value
+ if ( y === 1 ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+
+ end
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+endmodule
+
+
+module jtransmissiongate(y,control,a);
+ output y;
+ input a,control;
-but!
-i’m here.
-and grateful.
+ wire cbar;
+
+ assign cbar = ~control;
-like i said,
-the drugs are making it difficult to do normal things.recovering makes it difficult to do normal things.
+ nmos n1(y,a,control);
+ pmos p1(y,a,cbar);
+ //cmos c1(y,a,control,cbar);
-but in the next couple days,
-i have some yarny goodness planned for you.
-stick with me bitches.
+endmodule
-mostly, though, i want to say thank you.
-thank you to all the readers, inter-knitters, and friends
-for your good thoughts, your well wishes, comments and prayers,
-for all the tweets, texts, visits, and vibes from across the globe.
-So glad to hear you are home. I wish you a speedy recovery. After my last surgery (double knee replacement), I thought I would get a whole lot of reading done. While on the drugs for a month, I could not focus enough to read a paragraph. What a disappointment! Take it easy and have patience with your recovery. Your body has had a jolt! Donna
+module juniversalShiftRegisterTb;
+ wire [3:0] DATAOUT;
+ reg clock, reset;
+ reg [1:0] MODE;
+ reg [3:0] DATAIN;
-I was just thinking of you. I’m glad to hear you are recovering. Being in the hospital sucks. Yes they have the amazing ability to prevent deaths, but still, not a favorite place. Glad you’re home. Here’s hoping for a speedy recovery. (And I do hope you’re able to at least knit.)
+ juniversalShiftRegister jusr(DATAOUT, clock, reset, MODE, DATAIN);
-Another lurker hoping you have good drugs and a speedy recovery. Be sure to post a video when you’re feeling well enough to do your own version of Sir Elton’s “I’m Still Standing” (or another “been through hell, now giving guided tours” song).
+ initial
+ begin
+ clock =0; MODE = 2'b00; DATAIN = 4'b0000;
+ reset = 1; #10; reset = 0; #10;
-Don’t even care about the yarny goodness, stoked to see that you are back in the world of the living! Hospitals are wonderful for saving lives, but home is where you heal…
-This event even made me a twitter follower, which is saying some as I don’t have a cell phone!
-Relax, think positive thoughts, and play with lots of great yarn!
+ $display("RSLT\tD == DOUT");
+ // Start testing Right Shift mode
+ MODE = 2'b00; reset = 1; #10; reset = 0; #10;
+ MODE = 2'b01; DATAIN = 4'b0011; #10;
+ if ( DATAOUT === 4'b1000 ) // look at previous value of DATAOUT as well
+ $display("PASS\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ else
+ $display("FAIL\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ MODE = 2'b01; DATAIN = 4'b0011; #10;
+ if ( DATAOUT === 4'b1100 ) // look at previous value of DATAOUT as well
+ $display("PASS\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ else
+ $display("FAIL\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+
+
+ // Start testing Left Shift mode
+ MODE = 2'b00; reset = 1; #10; reset = 0; #10;
+ MODE = 2'b10; DATAIN = 4'b0111; #10;
+ if ( DATAOUT === 4'b0001 ) //
+ $display("PASS\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ else
+ $display("FAIL\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ MODE = 2'b10; DATAIN = 4'b0111; #10;
+ if ( DATAOUT === 4'b0011 ) //
+ $display("PASS\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ else
+ $display("FAIL\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+
+
+ // Start testing parallel load mode
+ MODE = 2'b00; reset = 1; #10; reset = 0; #10;
+ MODE = 2'b11; DATAIN = 4'b1010; #10;
+ if ( DATAOUT === 4'b1010 )
+ $display("PASS\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+ else
+ $display("FAIL\t%p is %p with %p", DATAIN, MODE, DATAOUT);
+
+ #20;
+ $finish;
+ end
+
+
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+
+
+ always #5 clock = ~clock;
+
+endmodule
+
+#!/bin/bash
+# use predefined variables to access passed arguments
+#echo arguments to the shell
+echo $1 $2 $3 ' -> echo $1 $2 $3'
+
+# We can also store arguments from bash command line in special array
+args=("$@")
+#echo arguments to the shell
+echo ${args[0]} ${args[1]} ${args[2]} ' -> args=("$@"); echo ${args[0]} ${args[1]} ${args[2]}'
+
+#use $@ to print out all arguments at once
+echo $@ ' -> echo $@'
+
+# use $# variable to print out
+# number of arguments passed to the bash script
+echo Number of arguments passed: $# ' -> echo Number of arguments passed: $#'
+
+Let’s try executing this script and providing three arguments.
+
+$ ./arguments.sh Bash Scripting Tutorial
+
+The results when we execute this script:
+
+Bash Scripting Tutorial -> echo $1 $2 $3
+Bash Scripting Tutorial -> args=("$@"); echo ${args[0]} ${args[1]} ${args[2]}
+Bash Scripting Tutorial -> echo $@
+Number of arguments passed: 3 -> echo Number of arguments passed: $#
+
+Executing shell commands with bash
+
+The best way to execute a separate shell command inside of a Bash script is by creating a new subshell through the $( ) syntax. Check the example below where we echo the result of running the uname -o command.
+
+#!/bin/bash
+# use a subshell $() to execute shell command
+echo $(uname -o)
+# executing bash command without subshell
+echo uname -o
+
+Notice that in the final line of our script, we do not execute the uname command within a subshell, therefore the text is taken literally and output as such.
+
+$ uname -o
+GNU/LINUX
+$ ./subshell.sh
+GNU/LINUX
+uname -o
+
+Reading User Input
+
+We can use the read command to read input from the user. This allows a user to interact with a Bash script and help dictate the way it proceeds. Here’s an example:
+
+#!/bin/bash
+
+echo -e "Hi, please type the word: \c "
+read word
+echo "The word you entered is: $word"
+echo -e "Can you please enter two words? "
+read word1 word2
+echo "Here is your input: \"$word1\" \"$word2\""
+echo -e "How do you feel about bash scripting? "
+# read command now stores a reply into the default build-in variable $REPLY
+read
+echo "You said $REPLY, I'm glad to hear that! "
+echo -e "What are your favorite colours ? "
+# -a makes read command to read into an array
+read -a colours
+echo "My favorite colours are also ${colours[0]}, ${colours[1]} and ${colours[2]}:-)"
+
+Our Bash script asks multiple questions and then is able to repeat the information back to us through variables and arrays:
+
+$ ./read.sh
+Hi, please type the word: Linuxconfig.org
+The word you entered is: Linuxconfig.org
+Can you please enter two words?
+Debian Linux
+Here is your input: "Debian" "Linux"
+How do you feel about bash scripting?
+good
+You said good, I'm glad to hear that!
+What are your favorite colours ?
+blue green black
+My favorite colours are also blue, green and black:-)
-I’m not religious, but THANK GOD you are okay. You can’t keep a good man down, that’s what I say. . . . I am thinking about medicine/doctors. So many people say- oh, I don’t like to take drugs, let the body heal itself, etc. These are people who have never been critically sick. Once you’ve been there, life/attitudes change.
-It’s like a Alice in Wonderland experience, being critically sick. Or, a crap shoot.
-But, hey, I am glad, so glad, you are on the road to recovery. What a great person you are!
-Nancy Paris
+Bash Trap Command
-de-lurking to say I’m glad you are home and recovering. It’s scary to rely on others when you’ve been self-sufficient and a hospital seems to be no place to heal….you really need “home” for that. Give yourself plenty of time and don’t overdo.
-After finishing in first place at the Bold Leaders Challenge Feb. 18 and 19 at Fort Knox, Ky., the team qualifies to take part in the Sandhurst Military Skills Competition at the U.S. Military Academy at West Point.
+The trap command can be used in Bash scripts to catch signals sent to the script and then execute a subroutine when they occur. The script below will detect a Ctrl + C interrupt.
-Sandhurst is an inter-company competition at West Point. Not only do West Point teams compete amongst themselves, but they compete against teams from their fellow federal service academies, select teams from the U.S. Army Cadet Command (ROTC), the United States Military Academy Preparatory School team, and international teams. Fifty-five teams will take part in Sandhurst, including international competitors from Great Britain, Australia, Afghanistan and China.
+#!/bin/bash
+# bash trap command
+trap bashtrap INT
+# bash clear screen command
+clear;
+# bash trap function is executed when CTRL-C is pressed:
+# bash prints message => Executing bash trap subrutine !
+bashtrap()
+{
+ echo "CTRL+C Detected !...executing bash trap !"
+}
+# for loop from 1/10 to 10/10
+for a in `seq 1 10`; do
+ echo "$a/10 to Exit."
+ sleep 1;
+done
+echo "Exit Bash Trap Example!!!"
+
+In the output below you can see that we try to Ctrl + C two times but the script continues to execute.
+
+$ ./trap.sh
+1/10 to Exit.
+2/10 to Exit.
+^CCTRL+C Detected !...executing bash trap !
+3/10 to Exit.
+4/10 to Exit.
+5/10 to Exit.
+6/10 to Exit.
+7/10 to Exit.
+^CCTRL+C Detected !...executing bash trap !
+8/10 to Exit.
+9/10 to Exit.
+10/10 to Exit.
+Exit Bash Trap Example!!!
+
+Arrays
+
+Bash is capable of storing values in arrays. Check the sections below for two different examples.
+Declare simple bash array
+
+This example declares an array with four elements.
+
+#!/bin/bash
+#Declare array with 4 elements
+ARRAY=( 'Debian Linux' 'Redhat Linux' Ubuntu Linux )
+# get number of elements in the array
+ELEMENTS=${#ARRAY[@]}
+
+# echo each element in array
+# for loop
+for (( i=0;i<$ELEMENTS;i++)); do
+ echo ${ARRAY[${i}]}
+done
+
+Executing the script will output the elements of our array:
+
+$ ./arrays.sh
+Debian Linux
+Redhat Linux
+Ubuntu
+Linux
+
+Read file into bash array
+
+Rather than filling out all of the elements of our array in the Bash script itself, we can program our script to read input and put it into an array.
+
+#!/bin/bash
+# Declare array
+declare -a ARRAY
+# Link filedescriptor 10 with stdin
+exec 10<&0
+# stdin replaced with a file supplied as a first argument
+exec < $1
+let count=0
+
+while read LINE; do
+
+ ARRAY[$count]=$LINE
+ ((count++))
+done
+
+echo Number of elements: ${#ARRAY[@]}
+# echo array's content
+echo ${ARRAY[@]}
+# restore stdin from filedescriptor 10
+# and close filedescriptor 10
+exec 0<&10 10<&-
+
+Now let’s execute the script and store four elements in the array by using a file’s contents for input.
+
+$ cat bash.txt
+Bash
+Scripting
+Tutorial
+Guide
+$ ./bash-script.sh bash.txt
+Number of elements: 4
+Bash Scripting Tutorial Guide
+
+
+
+
+ *** CompressADPCM3 ***
+
+ ; JoinCode = CompressADPCM3(Source, Length, Destination, JoinCode)
+ ; d0 a0 d0 a1 d1
+ ;
+ ; This function compresses a RAW sample to a given memory. The
+ ; result is a 3bit ADPCM code. The destination buffer must be
+ ; at least (Length+7)/8*3 bytes in size.
+ ;
+ ; Function of the JoinCode: See above.
+
+ XDEF _CompressADPCM3
+_CompressADPCM3
+ movem.l d2-d4,-(sp)
+
+ move.w d1,d3 ; d3=EstMax
+ swap d1
+ move.w d1,d2 ; d2=Delta
+ bne.s c3_loop
+ moveq #5,d2
+
+c3_loop moveq #0,d1 ; d1=Shifter
+ bsr.s c3_byte
+ lsl.b #3,d1
+ bsr.s c3_byte
+ lsl.w #3,d1
+ bsr.s c3_byte
+ lsl.w #3,d1
+ bsr.s c3_byte
+ lsl.w #3,d1
+ bsr.s c3_byte
+ lsl.l #3,d1
+ bsr.s c3_byte
+ lsl.l #3,d1
+ bsr.s c3_byte
+ lsl.l #3,d1
+ bsr.s c3_byte
+ swap d1
+ move.b d1,(a1)+
+ rol.l #8,d1
+ move.b d1,(a1)+
+ rol.l #8,d1
+ move.b d1,(a1)+
+
+ subq.l #8,d0 ; d0=Counter
+ bhi.s c3_loop
+
+ move.w d2,d0 ; -> d0=JoinCode
+ swap d0
+ move.w d3,d0
+
+ movem.l (sp)+,d2-d4
+ rts
+
+c3_byte move.b (a0)+,d4
+ ext.w d4
+ asl.w #6,d4
+ sub.w d3,d4
+ bpl.s c3_positive
+ or.b #%100,d1
+ neg.w d4
+c3_positive sub.w d2,d4
+ bls.s c3_00
+ sub.w d2,d4
+ bls.s c3_01
+ sub.w d2,d4
+ bls.s c3_10
+c3_11 or.b #%11,d1
+ bra.s c3_00
+c3_10 or.b #%10,d1
+ bra.s c3_00
+c3_01 or.b #%01,d1
+c3_00 bsr.s adaptive
+ rts
+
+
+
+ *** Adaptions-Routine ***
+
+adaptive ; d1 = SignBit + DataBit
+
+ move.w d2,d4
+ lsr.w #1,d4
+ btst #1,d1
+ beq.s d3_0
+d3_1 btst #0,d1
+ beq.s d3_10
+d3_11 add.w d2,d4
+ add.w d2,d4
+ add.w d2,d4
+ mulu #$6607,d2
+ bra.s d3_sign
+d3_10 add.w d2,d4
+ add.w d2,d4
+ mulu #$4D14,d2
+ bra.s d3_sign
+d3_0 btst #0,d1
+ beq.s d3_00
+d3_01 add.w d2,d4
+ mulu #$3A9F,d2
+ bra.s d3_sign
+d3_00 mulu #$399A,d2
+d3_sign btst #2,d1
+ beq.s d3_add
+ neg.w d4
+d3_add add.w d4,d3
+ add.l #8192,d2
+ moveq #14,d4
+ asr.l d4,d2
+ rts
+
+
+ END
+
+ mov
+
+
+ mov bp, 255
+
+traceloop:
+
+; Evaluate whether sample point is inside or outside the shape:
+;
+; ( a & ( b | c ) ) | ( b & c ) = 0 <=> voxel overlaps fractal
+
+ push bx
+
+ mov dx, bx
+ or dx, cx
+ and dx, ax
+ and bx, cx
+ or dx, bx
+
+ pop bx
+
+; Ignore the lower bits or the fractal will be too fine to see
+
+ shr dx, 6
+ jz endtrace
+
+ dec bp
+ jnz traceloop
+
+endtrace:
+
+; BP is 255 - the distance we had to trace
+
+ mov dx, bp
+ not dl
+
+; Plot pixel
+
+ mov ds:[di],dl
+ inc di
+
+
+
+
+
+
+// ******************
+
+#include
+#include
+#include
+#include module jtransmissiongatetb;
+ wire y;
+ reg a,control;
+ jtransmissiongate jtgate(y,control,a);
+ initial
+ begin
+ $display ("RESULT\ta\ty");
-This will be the first time in more than a decade that a Citadel team has competed at Sandhurst.
+ a = 0; control = 0; # 50; // Initial value is set
+ if ( y === 1'bz ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+
+ a = 0; control = 1; # 50; // Initial value is set
+ if ( y === 0 ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+
+ a = 1; control = 0; # 50; // Another value
+ if ( y === 1'bz ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
+ control = 1; # 50; // Simply change the control signal
+ control = 0; # 50; // Simply change the control signal
-“We have an exceptional group of young men and women that will represent The Citadel,” said Col. Laurence Hutto, commanding officer of the Palmetto Battalion at The Citadel. “We are excited to be able to compete at this level for the first time in recent years.This is a testament to the commitment, training and leadership of our cadets and the instructors in the Palmetto Battalion.”
+ a = 1; control = 1; # 50; // Another value
+ if ( y === 1 ) // Test for inversion
+ $display ("PASS \t%d\t%d",a,y);
+ else
+ $display ("FAIL \t%d\t%d",a,y);
-The Palmetto Battalion Ranger Challenge team trains seven days a week while maintaining good standing in their academic requirements and cadet duties. They compete in a rapid, timed series military tasks along an eight-mile route.
+ end
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+endmodule
+#include
+#include
+#include
+#include
+#include
-The Palmetto Battalion Ranger Challenge team trains seven days a week while maintaining good standing in their academic requirements and cadet duties. They compete in a rapid, timed series military tasks along an eight-mile route. The winning squad is determined by the total time required to negotiate the course plus total points scored throughout the two days.
-Making this a weekly event due to interest. BYOB
+#include "config.h"
+#include "cuda/pack_tensor.cuh"
+#include "cuda/quantize.cuh"
+#include "cuda/q_matrix.cuh"
+#include "cuda/q_attn.cuh"
+#include "cuda/q_mlp.cuh"
+#include "cuda/q_gemm.cuh"
+#include "cuda/rms_norm.cuh"
+#include "cuda/rope.cuh"
+#include "cuda/cache.cuh"
+#include "cuda/h_gemm.cuh"
+#include "cpp/quantize_func.h"
+#include "cpp/sampling.h"
-OFFICIAL RULES HERE (http://austinpoker.totallyimba.com/?page_id=11)
+#include "cpp/util.h"
+// Some decluttering macros
+#define TORCH_CHECK_DTYPE(__x, __dtype) TORCH_CHECK((__x).dtype() == torch::__dtype, #__x " is incorrect datatype, must be " #__dtype)
+#define TORCH_CHECK_DTYPE_OPT(__x, __dtype) TORCH_CHECK((__x).device().is_meta() || (__x).dtype() == torch::__dtype, #__x " is incorrect datatype, must be " #__dtype)
+#define TORCH_CHECK_SHAPES(__x, __dim_x, __y, __dim_y, __scale_y) TORCH_CHECK((__x).size(__dim_x) == (__y).size(__dim_y) * __scale_y, #__x " and " #__y " have incompatible shapes")
+#define TORCH_CHECK_SHAPES_OPT(__x, __dim_x, __y, __dim_y, __scale_y) TORCH_CHECK((__x).device().is_meta() || (__x).size(__dim_x) == (__y).size(__dim_y) * __scale_y, #__x " and " #__y " have incompatible shapes")
+
+
+// Packing functions
+
+void pack_rows_4
+(
+ torch::Tensor input,
+ torch::Tensor output
+)
+{
+ const at::cuda::OptionalCUDAGuard device_guard(device_of(input));
+
+ TORCH_CHECK_DTYPE(input, kShort);
+ TORCH_CHECK_DTYPE(output, kInt);
+ TORCH_CHECK_SHAPES(input, 0, output, 0, 1);
+ TORCH_CHECK_SHAPES(input, 1, output, 1, 8);
+
+ int rows = input.size(0);
+ int columns = input.size(1);
+
+ pack_rows_4_cuda
+ (
+ (uint16_t*) input.data_ptr(),
+ (uint32_t*) output.data_ptr(),
+ rows,
+ columns
+ );
+}
-Summary:
+void pack_columns
+(
+ torch::Tensor input,
+ torch::Tensor output,
+ int bits
+)
+{
+ const at::cuda::OptionalCUDAGuard device_guard(device_of(input));
+
+ TORCH_CHECK_DTYPE(input, kShort);
+ TORCH_CHECK_DTYPE(output, kInt);
+ TORCH_CHECK_SHAPES(input, 1, output, 1, 1);
+
+ int in_rows = input.size(0);
+ int columns = input.size(1);
+ int out_rows = output.size(0);
+ int exp_out_rows = in_rows * bits / 32;
+ TORCH_CHECK(out_rows == exp_out_rows, "Wrong output shape for input and bitrate")
+
+ pack_columns_cuda
+ (
+ (uint16_t*) input.data_ptr(),
+ (uint32_t*) output.data_ptr(),
+ in_rows,
+ out_rows,
+ columns,
+ bits
+ );
+}
+#include "quantize_func.h"
+#include "../cuda/quantize.cuh"
+
+void quantize_range
+(
+ torch::Tensor quant,
+ torch::Tensor scale,
+ torch::Tensor out_q,
+ float qzero,
+ float maxq,
+ torch::Tensor hessian_inv,
+ torch::Tensor weights,
+ torch::Tensor error,
+ int a,
+ int b
+)
+{
+ int columns = weights.size(1);
+ int hcolumns = hessian_inv.size(1);
+ for (int c = a; c < b; c++)
+ {
+ quantize_cuda
+ (
+ ((const float*) weights.data_ptr()) + c * columns,
+ ((float*) quant.data_ptr()) + c * columns,
+ (const float*) scale.data_ptr(),
+ out_q.device().is_meta() ? NULL : ((uint16_t*) out_q.data_ptr()) + c * columns,
+ 1,
+ columns,
+ qzero,
+ maxq
+ );
+
+ adjust_error_row_cuda
+ (
+ (const float*) hessian_inv.data_ptr(),
+ (float*) error.data_ptr(),
+ (const float*) weights.data_ptr(),
+ (const float*) quant.data_ptr(),
+ c,
+ columns,
+ hcolumns
+ );
+
+ vv_mul_sub_cuda
+ (
+ ((const float*) hessian_inv.data_ptr()) + c * hcolumns + c,
+ ((const float*) error.data_ptr()) + c * columns,
+ ((float*) weights.data_ptr()) + c * columns,
+ b - c,
+ columns
+ );
+ }
-6-14 people:
+ torch::Tensor x = hessian_inv.slice(0, a, b).slice(1, b).transpose(0, 1);
+ torch::Tensor y = error.slice(0, a, b);
+ weights.slice(0, b).addmm_(x, y, 1.0f, -1.0f);
+}
+//---------------------------------------------------------------------------------------------------
+//---------------------------------------------------------------------------------------------------
+__forceinline__ __device__ half dot22_8_h(half2(&dq)[4], const half* a_ptr, const half g_result, const half qs_h)
+{
+ half2 result = {};
+ const half2* a2_ptr = (const half2*)a_ptr;
+ #pragma unroll
+ for (int i = 0; i < 4; i++) result = __hfma2(dq[i], *a2_ptr++, result);
+ half result_h = __hadd(__low2half(result), __high2half(result));
+ return __hfma(result_h, qs_h, g_result);
+}
-$20 buy-in Texas Holdem Tourney gets 10,000 in chips
+__forceinline__ __device__ half dot22_16_h(half2(&dq)[8], const half* a_ptr, const half g_result, const half qs_h)
+{
+ half2 result = {};
+ const half2* a2_ptr = (const half2*)a_ptr;
+ #pragma unroll
+ for (int i = 0; i < 8; i++) result = __hfma2(dq[i], *a2_ptr++, result);
+ half result_h = __hadd(__low2half(result), __high2half(result));
+ return __hfma(result_h, qs_h, g_result);
+}
+__forceinline__ __device__ half dot22_32_h(half2(&dq)[16], const half* a_ptr, const half g_result, const half qs_h)
+{
+ half2 result = {};
+ const half2* a2_ptr = (const half2*)a_ptr;
+ #pragma unroll
+ for (int i = 0; i < 16; i += 1) result = __hfma2(dq[i], *a2_ptr++, result);
+ half result_h = __hadd(__low2half(result), __high2half(result));
+ return __hfma(result_h, qs_h, g_result);
+}
+name: Build Wheels
+
+on: workflow_dispatch
+
+jobs:
+ build_wheels:
+ name: ${{ matrix.os }} Python ${{ matrix.pyver }} CUDA ${{ matrix.cuda }}
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-20.04, windows-latest]
+ pyver: ["3.8", "3.9", "3.10", "3.11"]
+ cuda: ["11.7.0", "11.8.0", "12.1.1"]
+ defaults:
+ run:
+ shell: pwsh
+ env:
+ CUDAVER: ${{ matrix.cuda }}
+ PYVER: ${{ matrix.pyver }}
+
+ steps:
+ - name: Free Disk Space
+ uses: jlumbroso/free-disk-space@v1.2.0
+ if: runner.os == 'Linux'
+ with:
+ tool-cache: false
+ android: true
+ dotnet: true
+ haskell: true
+ large-packages: false
+ swap-storage: false
+
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.pyver }}
+
+ - name: Setup Mamba
+ uses: conda-incubator/setup-miniconda@v2.2.0
+ with:
+ activate-environment: "build"
+ python-version: ${{ matrix.pyver }}
+ miniforge-variant: Mambaforge
+ miniforge-version: latest
+ use-mamba: true
+ add-pip-as-python-dependency: true
+ auto-activate-base: false
+
+ - name: Install Dependencies
+ run: |
+ $cudaVersion = $env:CUDAVER
+ $cudaVersionPytorch = $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','')
+
+ $cudaChannels = ''
+ $cudaNum = [int]$cudaVersion.substring($cudaVersion.LastIndexOf('.')+1)
+ while ($cudaNum -ge 0) { $cudaChannels += '-c nvidia/label/cuda-' + $cudaVersion.Remove($cudaVersion.LastIndexOf('.')+1) + $cudaNum + ' '; $cudaNum-- }
+ mamba install -y 'cuda' $cudaChannels.TrimEnd().Split()
+
+ if (!(mamba list cuda)[-1].contains('cuda')) {sleep -s 10; mamba install -y 'cuda' $cudaChannels.TrimEnd().Split()}
+ if (!(mamba list cuda)[-1].contains('cuda')) {throw 'CUDA Toolkit failed to install!'}
+
+ if ([version]$env:CUDAVER -lt [version]'11.8.0') {$torchver = "torch==2.0.1"} else {$torchver = "torch==2.1.0"}
+ python -m pip install $torchver --index-url https://download.pytorch.org/whl/cu$cudaVersionPytorch
+
+ python -m pip install build wheel safetensors sentencepiece ninja
+
+ - name: Build Wheel
+ run: |
+ $env:CUDA_PATH = $env:CONDA_PREFIX
+ $env:CUDA_HOME = $env:CONDA_PREFIX
+
+ $cudaVersion = $env:CUDAVER
+ $cudaVersionPytorch = $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','')
+ $BUILDTAG = "+cu$cudaVersionPytorch"
+
+ if ($IsLinux) {$env:LD_LIBRARY_PATH = $env:CONDA_PREFIX + '/lib:' + $env:LD_LIBRARY_PATH}
+ $env:TORCH_CUDA_ARCH_LIST = if ([version]$env:CUDAVER -lt [version]'11.8') {'6.0 6.1 7.0 7.5 8.0 8.6+PTX'} else {'6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0+PTX'}
+ python -m build -n --wheel -C--build-option=egg_info "-C--build-option=--tag-build=$BUILDTAG"
+
+ if ($IsLinux -and $env:PYVER -eq '3.11' -and $env:CUDAVER -eq '11.8.0') {$env:EXLLAMA_NOCOMPILE=1; python -m build -n}
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: 'wheels'
+ path: ./dist/*
+
+ build_rocm:
+ name: Build ROCm Wheels & Release
+ needs: build_wheels
+ uses: ./.github/workflows/build-wheels-rocm.yml
+
+Metadata-Version: 2.1
+Name: exllamav2
+Version: 0.0.10
+Home-page: https://github.com/turboderp/exllamav2
+Author: turboderp
+License: MIT
+License-File: LICENSE
+Requires-Dist: pandas
+Requires-Dist: ninja
+Requires-Dist: fastparquet
+Requires-Dist: torch>=2.0.1
+Requires-Dist: safetensors>=0.3.2
+Requires-Dist: sentencepiece>=0.1.97
+Requires-Dist: pygments
+Requires-Dist: websockets
+Requires-Dist: regex
+
+
+# ExLlamaV2
+
+ExLlamaV2 is an inference library for running local LLMs on modern consumer GPUs.
+
+
+## Overview of differences compared to V1
+
+- Faster, better kernels
+- Cleaner and more versatile codebase
+- Support for a new quant format (see below)
+
+
+## Performance
+
+Some quick tests to compare performance with V1. There may be more performance optimizations in the future, and
+speeds will vary across GPUs, with slow CPUs still being a potential bottleneck:
+
+| Model | Mode | Size | grpsz | act | V1: 3090Ti | V1: 4090 | V2: 3090Ti | V2: 4090 |
+|------------|--------------|-------|-------|-----|------------|----------|------------|-------------|
+| Llama | GPTQ | 7B | 128 | no | 143 t/s | 173 t/s | 175 t/s | **195** t/s |
+| Llama | GPTQ | 13B | 128 | no | 84 t/s | 102 t/s | 105 t/s | **110** t/s |
+| Llama | GPTQ | 33B | 128 | yes | 37 t/s | 45 t/s | 45 t/s | **48** t/s |
+| OpenLlama | GPTQ | 3B | 128 | yes | 194 t/s | 226 t/s | 295 t/s | **321** t/s |
+| CodeLlama | EXL2 4.0 bpw | 34B | - | - | - | - | 42 t/s | **48** t/s |
+| Llama2 | EXL2 3.0 bpw | 7B | - | - | - | - | 195 t/s | **224** t/s |
+| Llama2 | EXL2 4.0 bpw | 7B | - | - | - | - | 164 t/s | **197** t/s |
+| Llama2 | EXL2 5.0 bpw | 7B | - | - | - | - | 144 t/s | **160** t/s |
+| Llama2 | EXL2 2.5 bpw | 70B | - | - | - | - | 30 t/s | **35** t/s |
+| TinyLlama | EXL2 3.0 bpw | 1.1B | - | - | - | - | 536 t/s | **635** t/s |
+| TinyLlama | EXL2 4.0 bpw | 1.1B | - | - | - | - | 509 t/s | **590** t/s |
-1 re-buy XOR 1 add-on up until break of 10,000
+## How to
+Clone the repository and install dependencies:
-15-20 people:
+```
+git clone https://github.com/turboderp/exllamav2
+cd exllamav2
+pip install -r requirements.txt
+python test_inference.py -m -p "Once upon a time,"
+```
+A simple console chatbot is included. Run it with:
-$20 buy-in Texas Holdem Tourney gets 5,000 in chips
+```
+python examples/chat.py -m -mode llama
+```
+The `-mode` argument chooses the prompt format to use. `llama` is for the Llama(2)-chat finetunes, while `codellama`
+probably works better for CodeLlama-instruct. `raw` will produce a simple chatlog-style chat that works with base
+models and various other finetunes. You can also provide a custom system prompt with `-sp`.
-1 re-buy XOR 1 add-on up until break of 5,000
+## Integration and APIs
+- [TabbyAPI](https://github.com/theroyallab/tabbyAPI/) is a FastAPI-based server that provides an OpenAI-style web API
+compatible with [SillyTavern](https://sillytavernai.com/) and other frontends.
-Blind levels will be adjusted for lower chip counts. This is due to a limited number of physical chips that can be put in play
+- [ExUI](https://github.com/turboderp/exui) is a simple, standalone single-user web UI that serves an ExLlamaV2 instance
+directly with chat and notebook modes.
+- [text-generation-webui](https://github.com/oobabooga/text-generation-webui) supports ExLlamaV2 through the **exllamav2**
+and **exllamav2_HF** loaders.
-$10 cash game after tourney (re-buy at will until host calls it for the night)
+## Installation
+### Method 1: Install from source
+To install the current dev version, clone the repo and run the setup script:
-For now, we'll default to Will's place but if the group decides to float, we'll decide that with at least a day's warning.
-Emergency room outreach to chronically addicted individuals. A pilot study.
-There is a dearth of literature describing the treatment needs of substance-abusing or chronically mentally ill homeless individuals who frequently utilize emergency medical services. This homeless subset represents a discrete population in the larger homeless community. We describe a pilot program, supported by local county public funds, and conducted by a local nonprofit social work agency, which was designed to provide intensive case management services to such a population. Outreach and case management activities resulted in linking clients to a broad range of entitlements and community services. Among those receiving outreach and case management services (n = 10), emergency services decreased by 58% in the year following referral compared to the year before (p <.03). Emergency services for the purpose of this study are defined as ambulance response and transport followed by emergency room admission and treatment. Those in a comparable control group (n = 8) showed no decrease in emergency service use. These results suggest that such community-based outreach programs can significantly improve patient outcome and provide substantial cost savings for local governments and hospitals.
-In 2011 Robert attempted to drink 365 beers in 365 days, and he nailed it! What will he do next?
+```
+git clone https://github.com/turboderp/exllamav2
+cd exllamav2
+python setup.py install --user
+```
-Saturday, 29 August 2015
+By default this will also compile and install the Torch C++ extension (`exllamav2_ext`) that the library relies on.
+You can skip this step by setting the `EXLLAMA_NOCOMPILE` environment variable:
-August 22, 2015
+```
+EXLLAMA_NOCOMPILE= python setup.py install --user
+```
-193/1467) Home: All Natural Blonde by Amsterdam Brewery of Ontario: *; 5%, which goes to show how flexible the definition of light is becoming; grainy nose; bland - just a hint of fruit at finish; I imagine it does pay the rent, though;
+This will install the "JIT version" of the package, i.e. it will install the Python components without building the
+C++ extension in the process. Instead, the extension will be built the first time the library is used, then cached in
+`~/.cache/torch_extensions` for subsequent use.
-194/1468) Home: Molotov Lite by Eviltwin Brewing of Connecticut, U.S.A.: **1/2; 8.5% Imperial India Pale Ale; opaque with a fluffy head; off-orange; earthy and resiny with a touch of citrus to the nose; earthy, resiny flavours with a bitter astringent after taste;
-Such valves are used to adjust and modify the volume flow of a fluid through a fluid channel. It is known in this context that the flow of the fluid through the channel is to be controlled by exerting pressure from the outside on a tube in which the fluid channel is formed, such that the pressure is adjusted as a function of a desired volume flow of the fluid through the channel.
-In medical technology, dosing of volume flows takes place, for example, through microvalves or directly through a corresponding pump with which the fluid to be dispensed is acted upon with pressure. Valves are used in medicine and in the cosmetic field, for example, in injection of medically and cosmetically active substances. In addition to the injection of substances for fat reduction or for injection beneath wrinkles, dosed dispensing of a substance is also necessary for application of ink for tattooing or permanent makeup in the cosmetic field. In addition to various vaccinations, medical applications also include, for example, mesotherapy. In these applications, in addition to the simple application of the media, simultaneous administration of multiple media is also provided, so that the media react with one another only after being applied.
-The dosing of the fluid may be performed by means of a contact method or a noncontact method. The fluid-dispensing device thus either does or does not come in contact with the skin. Noncontact devices are also referred to as so-called dispensers. The process of delivering the fluid is itself known as dispensing, jetting or pulsing. This dosing serves to apply substances to the skin or in subsequent substance delivery systems (cf. EP 1 882 491, for example). Contacting may be understood as dosing onto or through a surface.
-All these applications have in common the need for accurate dosing. Problems are often presented by chemical or fluid properties or particles or variable media.
-The document DE 103 37 484 B4 describes a noncontact dosing system, in which a tube is squeezed at a high speed, so that a free-flying droplet of liquid is formed. Dosing frequencies of 50 Hz may be achieved in this way. The design here is an open system without a prepressure. The liquid fills the tube because of the capillary forces, but the maximum dosing quantity and dosing frequency are limited by this design. If there is a backpressure, functioning is very limited or impossible.
-The document DE 693 25 591 T2 describes valve system for switching a flow through flexible tubes. Two positions (bistable open/closed) are selected via a pivotable lever. The liquids should flow through the valve at the coupled flange of this construction, which is manufactured by casting and welding. Possible contamination of the liquid is not prevented, nor can this principle be used as a disposable part or for higher frequencies (>1 Hz).
-The document EP 1 699 560 B1 describes one possibility for pipetting extremely small quantities, but is based essentially on a combination of traditional pipetting systems and the known PipeJet method, i.e., a tube deformation, embodied in this case as a pipette tip. It is thus possible here to dose only extremely small particles which fly through the air to their destination. This method cannot be used for injections because it is impossible to work at a backpressure.
-The document DE 197 06 513 C2 describes a micro-dosing method based on a pressure chamber having a reservoir connection and a fluid outlet. The pressure chamber is reduced in size by a displacement mechanism, so that the fluid is forced to the outlet. A device for detecting the position of the displacement mechanism is essential here.
-The document US 2010/0030152 A1 describes a therapeutic micro-needle system, in which multiple cannulas are used instead of one cannula.
-Q:
+### Method 2: Install from release (with prebuilt extension)
-How to check element visibility independent of parent visibility (jQuery or not)
+Releases are available [here](https://github.com/turboderp/exllamav2/releases), with prebuilt wheels that contain the
+extension binaries. Make sure to grab the right version, matching your platform, Python version (`cp`) and CUDA version.
+Download an appropriate wheel, then run:
-my first Question so please be patient. I have a container that holds a varying number of child elements like this:
-
-
content
-
content
-
content
-
+```
+pip install exllamav2-0.0.4+cu118-cp310-cp310-linux_x86_64.whl
+```
-Quick Question:
-Is there a jQuery or plain JS way of checking whether an element container would be visible independent of the parent being visible?
-Simply asking for
-jQuery('.parent .element:visible').length
+The `py3-none-any.whl` version is the JIT version which will build the extension on first launch. The `.tar.gz` file
+can also be installed this way, and it will build the extension while installing.
-does not work.
-Background: The parent container can be toggled, and the content of the child elements gets fetched by ajax requests and is filled when the response arrives. On every response I get, the child containers get specific classes indicating the type of the response, e.g. available, unavailable and some more. So the resulting DOM may look like this:
-
-
content
-
content
-
content
-
+### Method 3: Install from PyPI
-This is a module, that is used several times with different CSS files. So I do not control whether the CSS implementation actually hides unavailable elements because this is done only in CSS. And the container can be open, but does not have to. But I have to know if there would be visible elements inside of the container without opening it. Is this possible?
-Thanks in advance!
+A PyPI package is available as well. It can be installed with:
-A:
+```
+pip install exllamav2
+```
-I'm not sure why you need to do this if you have classes like available or unavailable. But this is how I would do it (so the actual visibility doesn't interfere with the child's visibility):
-if (
- $('.element').css('display') != 'none' &&
- $('.element').css('visibility') != 'hidden'
-) {
- // ...
-}
+The version available through PyPI is the JIT version (see above). Still working on a solution for distributing
+prebuilt wheels via PyPI.
+
+
+## EXL2 quantization
+
+ExLlamaV2 supports the same 4-bit GPTQ models as V1, but also a new "EXL2" format. EXL2 is based on the same
+optimization method as GPTQ and supports 2, 3, 4, 5, 6 and 8-bit quantization. The format allows for mixing quantization
+levels within a model to achieve any average bitrate between 2 and 8 bits per weight.
+
+Moreover, it's possible to apply multiple quantization levels to each linear layer, producing something akin to sparse
+quantization wherein more important weights (columns) are quantized with more bits. The same remapping trick that lets
+ExLlama work efficiently with act-order models allows this mixing of formats to happen with little to no impact on
+performance.
+
+Parameter selection is done automatically by quantizing each matrix multiple times, measuring the quantization
+error (with respect to the chosen calibration data) for each of a number of possible settings, per layer. Finally, a
+combination is chosen that minimizes the maximum quantization error over the entire model while meeting a target
+average bitrate.
+
+In my tests, this scheme allows Llama2 70B to run on a single 24 GB GPU with a 2048-token context, producing coherent
+and mostly stable output with 2.55 bits per weight. 13B models run at 2.65 bits within 8 GB of VRAM, although currently
+none of them uses GQA which effectively limits the context size to 2048. In either case it's unlikely that the model
+will fit alongside a desktop environment. For now.
+
+[![chat_screenshot](doc/llama2_70b_chat_thumb.png)](doc/llama2_70b_chat.png)
+[![chat_screenshot](doc/codellama_13b_instruct_thumb.png)](doc/codellama_13b_instruct.png)
+
+### Conversion
+
+A script is provided to quantize models. Converting large models can be somewhat slow, so be warned. The conversion
+script and its options are explained in [detail here](doc/convert.md)
+
+### HuggingFace repos
+
+- I've uploaded a few EXL2-quantized models to Hugging Face to play around with, [here](https://huggingface.co/turboderp).
+
+- [LoneStriker](https://huggingface.co/LoneStriker) provides a large number of EXL2 models on Hugging Face.
+
+
+
+// The macro below is used to shift rows of the A matrix and columns of the B matrix
+// in shared memory to minimize possible bank conflicts.
+// Before performing the nvcuda::wmma::mma_sync operation, the warp must load the matrix
+// data using the nvcuda::wmma::load_matrix_sync operation. Although the memory access pattern
+// is not specified for that function, each lane in the warp can read one or multiple matrix
+// elements from different matrix rows or columns.
+// For shared memory, such access can result in bank conflicts if different rows / columns
+// of the matrix map to the same bank. By shifting each row and column by a few bytes, we
+// make sure that they map to different banks, thus reducing the number of possible bank
+// conflicts.
+// The number of 16 two-byte "__nv_bfloat16" elements is chosen as the minimum possible shift because
+// we must keep each row and column 256-bit aligned, as required by nvcuda::wmma::load_matrix_sync.
+// #define SKEW_BF16 16
+//
+#define checkKernelErrors(expr) do { \
+ expr; \
+ \
+ cudaError_t __err = cudaGetLastError(); \
+ if (__err != cudaSuccess) { \
+ printf("Line %d: '%s' failed: %s\n", __LINE__, # expr, cudaGetErrorString(__err)); \
+ abort(); \
+ } \
+} while(0)
+
+
+DO ,1 <- #13
+PLEASE DO ,1 SUB #1 <- #238
+DO ,1 SUB #2 <- #108
+DO ,1 SUB #3 <- #112
+DO ,1 SUB #4 <- #0
+DO ,1 SUB #5 <- #64
+DO ,1 SUB #6 <- #194
+PLEASE DO ,1 SUB #7 <- #48
+DO ,1 SUB #8 <- #26
+DO ,1 SUB #9 <- #244
+PLEASE DO ,1 SUB #10 <- #168
+DO ,1 SUB #11 <- #24
+DO ,1 SUB #12 <- #16
+DO ,1 SUB #13 <- #162
+PLEASE READ OUT ,1
+PLEASE GIVE UP
+
+ DO .9 <- #16
+ DO .10 <- #0
+ DO .11 <- #1
+
+(1) PLEASE READ OUT .11
+ DO .1 <- .10
+ DO .2 <- .11
+ PLEASE (1009) NEXT
+ DO .10 <- .11
+ DO .11 <- .3
+
+ DO (3) NEXT
+ DO (1) NEXT
+
+(3) DO (4) NEXT
+ PLEASE GIVE UP
+
+(4) DO .1 <- .9
+ DO .2 <- #1
+ PLEASE (1010) NEXT
+ DO .9 <- .3
+ DO .1 <- '.9~.9'~#1
+ PLEASE (1020) NEXT
+ DO RESUME .1
+
+
+__global__ void testPtx(int *devBuff,float *devDummy,unsigned int *timeBuff){
+
+ unsigned int temp=0;
+ unsigned int start,end;
+ volatile unsigned int *tempPtr;
+ tempPtr = (volatile unsigned int *)&devBuff[0];
+
+ start = clock64();
+ temp=*tempPtr;
+ __threadfence();
+ end = clock64();
+ *devDummy=(float)(1.0/(float)(temp));
+ *timeBuff = (unsigned int)(end-start);
+ }
-In action:
-http://jsfiddle.net/EbaMY/2/
+ <% Option Explicit %>
+
+
+
+ VBScript Example
+
+
+ <%
+ ' Grab current time from Now() function.
+ ' An '=' sign occurring after a context switch (<%) is shorthand
+ ' for a call to the Write() method of the Response object.
+ Dim timeValue : timeValue = Now %>
+ The time, in 24-hour format, is
+ <%=Hour(timeValue)%>:<%=Minute(timeValue)%>:<%=Second(timeValue)%>.
+
+
+
-This invention relates generally to the reactivation of a catalyst and in particular to the reactivation of a tin oxide-containing catalyst.
-New approaches for extending the life of lasers used in a wide variety of applications are under investigation. One aspect of the rapid progress in this area is that new techniques for long lifetime space applications of high pulse energy, common and rare isotope, closed-cycle CO.sub.2 lasers are being studied. The high-energy, pulsed CO.sub.2 lasers must be operated closed-cycle to conserve gas, especially if rare-isotope gases are used. Rare-isotope gases, such as C.sup.18 O.sub.2 are used for improved transmission of the laser beam in the atmosphere.
-The electrons in electric-discharge CO.sub.2 lasers cause dissociation of some CO.sub.2 into O.sub.2 and CO and attach themselves to electronegative molecules such as O.sub.2, forming negative O.sub.2.sup.- ions, as well as larger negative ion clusters by collisions with CO or other molecules. For closed-cycle, sealed CO.sub.2 laser operation, the concentration of negative ions/clusters may become sufficiently high to form discharge instabilities which may ultimately disrupt the CO.sub.2 laser operation. The decrease in CO.sub.2 concentration due to dissociation into CO and O.sub.2 will reduce the average repetitively pulsed or continuous wave laser power, even if no disruptive negative ion instabilities occur.
-Accordingly, it is the primary object of this invention to extend the lifetime of a catalyst used to combine the CO and O.sub.2 products formed in a laser discharge.
-It is a further object of this invention to accomplish the primary object simply and inexpensively.
-Other objects and advantages will be apparent in the specification which follows.
-Attack on Iran: Hitlerian Act of Aggression
-Essential Reading Regarding Iran by Tony Cartalucci
-November 6, 2011 - As the rhetoric for war with Iran begins to mount, first with the staged DEA-Saudi bomb plot, and now with an upcoming IAEA report supposedly "exposing" Iran's nuclear arms ambitions, it is important to re-read through the signed confessions by the corporate-fascist interests behind this drive for war where it is admitted that:
+using System;
-1. Iran poses no threat to US national security - even if they acquired nuclear arms- rather Iran threatens US interests throughout the Middle East, half-way across the planet.2. Iran desperately wants to avoid armed conflict with both Israel and the West and would use nuclear weapons merely as a defensive deterrence.3. The US and Israel are actively looking to provoke Iran into war with a combination of covert support for destabilization within Iran, supporting listed terrorist organizations, and limited unilateral military first strikes to provoke an Iranian response needed to justify a wider military confrontation.
+namespace interptest
+{
+ class MainClass
+ {
+ static UInt16[] pwmTable =
+{
+ 0,
+ 1,
+ 15,
+ 53,
+ 127,
+ 249,
+ 431,
+ 685,
+ 1023,
+ 1457,
+ 1999,
+ 2661,
+ 3455,
+ 4393,
+ 5487,
+ 6749,
+ 8191,
+ 9825,
+ 11663,
+ 13717,
+ 15999,
+ 18521,
+ 21295,
+ 24333,
+ 27647,
+ 31249,
+ 35151,
+ 39365,
+ 43903,
+ 48777,
+ 53999,
+ 59581,
+ 65535
+};
-All of this is shockingly spelled out in extreme detail within the pages of the corporate-financier funded Brooking Institution report, "Which Path to Perisa?" It is essential that every American, European, and Israeli read just how malicious, callus and eager the globalist elite are to trigger a catastrophic war with the Islamic Republic for the sole purpose of protecting Wall Street and London's hegemony throughout the Middle East.
+ static UInt16 intToPWM(UInt16 intensity)
+ {
+ UInt32 index = ((UInt32)intensity) >> 11;
+ UInt32 low = ((UInt32)pwmTable[index]);
+ UInt32 high = ((UInt32)pwmTable[index + 1]);
+ UInt32 highp = ((UInt32)intensity & 0x7ff) + 1;
+ UInt32 lowp = 0x800 - highp;
+
+ UInt32 mid = (lowp * low + highp * high) >> 11;
+ return (UInt16)mid;
+ }
-Below are links to efforts to cover in detail the key aspects of this increasing war mongering, the key players behind it, including the corporations funding this agenda, as well as irrefutable evidence that illustrates these designs, laid out in 2009 have already begun to unfold.
-Upon reading this information, one will realize with horror how patiently persistent the corporate-financier interests on Wall Street and London have pursued this campaign towards war with Iran, and how absolutely deceitful they are willing to be in order to keep it moving forward. It is absolutely imperative that people understand not only just how contrived the treat of Iran is, but that those peddling the lies of such a threat have, behind closed doors, admitted as much.
+ public static void Main(string[] args)
+ {
+ for (UInt32 i = 0; i < 65536; i++)
+ {
+ UInt16 t = intToPWM((UInt16)i);
+ Console.WriteLine(t);
-Image: Just some of the corporate-sponsors behind the unelected, warmongering "think-tank" Brookings Institution which produced the treasonous "Which Path to Persia?" report.
+ }
+ }
+ }
+}
-....
+ // Suppress all warnings from casts which overflow.
+#![allow(overflowing_literals)]
+
+fn main() {
+ let decimal = 65.4321_f32;
+
+ // Error! No implicit conversion
+ let integer: u8 = decimal;
+ // FIXME ^ Comment out this line
+
+ // Explicit conversion
+ let integer = decimal as u8;
+ let character = integer as char;
+
+ // Error! There are limitations in conversion rules.
+ // A float cannot be directly converted to a char.
+ let character = decimal as char;
+ // FIXME ^ Comment out this line
+
+ println!("Casting: {} -> {} -> {}", decimal, integer, character);
+
+ // when casting any value to an unsigned type, T,
+ // T::MAX + 1 is added or subtracted until the value
+ // fits into the new type
+
+ // 1000 already fits in a u16
+ println!("1000 as a u16 is: {}", 1000 as u16);
+
+ // 1000 - 256 - 256 - 256 = 232
+ // Under the hood, the first 8 least significant bits (LSB) are kept,
+ // while the rest towards the most significant bit (MSB) get truncated.
+ println!("1000 as a u8 is : {}", 1000 as u8);
+ // -1 + 256 = 255
+ println!(" -1 as a u8 is : {}", (-1i8) as u8);
+
+ // For positive numbers, this is the same as the modulus
+ println!("1000 mod 256 is : {}", 1000 % 256);
+
+ // When casting to a signed type, the (bitwise) result is the same as
+ // first casting to the corresponding unsigned type. If the most significant
+ // bit of that value is 1, then the value is negative.
+
+ // Unless it already fits, of course.
+ println!(" 128 as a i16 is: {}", 128 as i16);
+
+ // In boundary case 128 value in 8-bit two's complement representation is -128
+ println!(" 128 as a i8 is : {}", 128 as i8);
+
+ // repeating the example above
+ // 1000 as u8 -> 232
+ println!("1000 as a u8 is : {}", 1000 as u8);
+ // and the value of 232 in 8-bit two's complement representation is -24
+ println!(" 232 as a i8 is : {}", 232 as i8);
+
+ // Since Rust 1.45, the `as` keyword performs a *saturating cast*
+ // when casting from float to int. If the floating point value exceeds
+ // the upper bound or is less than the lower bound, the returned value
+ // will be equal to the bound crossed.
+
+ // 300.0 as u8 is 255
+ println!(" 300.0 as u8 is : {}", 300.0_f32 as u8);
+ // -100.0 as u8 is 0
+ println!("-100.0 as u8 is : {}", -100.0_f32 as u8);
+ // nan as u8 is 0
+ println!(" nan as u8 is : {}", f32::NAN as u8);
+
+ // This behavior incurs a small runtime cost and can be avoided
+ // with unsafe methods, however the results might overflow and
+ // return **unsound values**. Use these methods wisely:
+ unsafe {
+ // 300.0 as u8 is 44
+ println!(" 300.0 as u8 is : {}", 300.0_f32.to_int_unchecked::());
+ // -100.0 as u8 is 156
+ println!("-100.0 as u8 is : {}", (-100.0_f32).to_int_unchecked::());
+ // nan as u8 is 0
+ println!(" nan as u8 is : {}", f32::NAN.to_int_unchecked::());
+ }
+}
-Please also take particular note of the corporations funding this act of Hitlerian aggression against a nation of 70 million at the potential loss of tens of thousands of American and Israeli (and other proxy soldiers') lives, not to mention the incalculable cost of the war to an already crippled American tax payer. Also note that these same corporations will not be losing their sons and daughters nor a single penny in the war effort, in fact, many of them stand to gain untold of fortunes and power - the very reason they are pursuing such a course of action.
+// This function only gets compiled if the target OS is linux
+#[cfg(target_os = "linux")]
+fn are_you_on_linux() {
+ println!("You are running linux!");
+}
-Now would be a good time to contact your representatives, boycott the above mentioned corporations, and begin undermining a system that is parasitically bleeding this planet to death both financially and literally in pursuit of global corporate-fascist hegemony. And remember, it will not end in Iran, the attack and destruction of Iranian sovereignty is just the beginning.
-Q:
+// And this function only gets compiled if the target OS is *not* linux
+#[cfg(not(target_os = "linux"))]
+fn are_you_on_linux() {
+ println!("You are *not* running linux!");
+}
-Volume rendering in WebGL
+fn main() {
+ are_you_on_linux();
-I have:
+ println!("Are you sure?");
+ if cfg!(target_os = "linux") {
+ println!("Yes. It's definitely linux!");
+ } else {
+ println!("Yes. It's definitely *not* linux!");
+ }
+}
-a 3D array containing a 3d dataset to be displayed
-a 4x4 matrix which defines spacing/scaling/orientation of the volume to be displayed
-a opacity transfer function
-a color transfer function
+struct Droppable {
+ name: &'static str,
+}
-I would like to use ThreeJS to do volume rendering (MIP, RayCasting, etc.) of this data. Are there some shaders/demos available?
-Should I work directly at the shader level or in javascript?
-Any hint/code sample would be very much appreciated,
-Best
+// This trivial implementation of `drop` adds a print to console.
+impl Drop for Droppable {
+ fn drop(&mut self) {
+ println!("> Dropping {}", self.name);
+ }
+}
-A:
+fn main() {
+ let _a = Droppable { name: "a" };
-Medical imaging (DICOM, Nifti, NRRD support for now) raycasting volume rendering in webGL with AMI/THREEJS
-http://fnndsc.github.io/ami/#vr_singlepass_raycasting
+ // block A
+ {
+ let _b = Droppable { name: "b" };
+ // block B
+ {
+ let _c = Droppable { name: "c" };
+ let _d = Droppable { name: "d" };
-2 Answers
-2
+ println!("Exiting block B");
+ }
+ println!("Just exited block B");
-The first two. Christopher Lloyd's character, Judge Doom, is the big conspirator organising the whole situation, but it's the head of Roger's studio, R. K. Maroon, who does the actual setup.
+ println!("Exiting block A");
+ }
+ println!("Just exited block A");
+
+ // Variable can be manually dropped using the `drop` function
+ drop(_a);
+ // TODO ^ Try commenting this line
+
+ println!("end of the main function");
+
+ // `_a` *won't* be `drop`ed again here, because it already has been
+ // (manually) `drop`ed
+}
+
+
+#include "Comms.h"
-He was the one to setup the situation between Acme and Jessica (the patty-cake), and he was also the one to hire Eddie Valiant to take pictures of the meeting. Then later when Valiant meets with Maroon to show him the results, they show Roger the pictures and he runs off to write his love poem, causing him to not have an alibi for the murder.
+Subdevice::Subdevice(const uint8_t _address, Device& _device) :
+ address(_address),
+ next(NULL),
+ device(_device)
+{
+ device.AddSubdevice(this);
+}
-Judge Doom convinces Maroon to do all of this by agreeing to buy his company, but only if he can also buy Acme at the same time. However it was never Maroon's intention for there to be a murder, he was just hoping to blackmail Acme into selling.
+MainSubdevice::MainSubdevice(const uint8_t _address, Device& _device) :
+ Subdevice(_address, _device)
+{}
-No, you gotta understand, Valiant, I had nothin' to do with Acme gettin' killed. I just wanted to sell my studio. But they wouldn't buy my property unless Acme would sell his. And he wouldn't. So I was gonna blackmail Acme with pictures of him and the rabbit's wife.
+void MainSubdevice::command(const uint32_t cmd)
+{
+ switch (cmd)
+ {
+ case MAINSUBDEVICE_CMD_PING: cmd_ping(); break;
+ case MAINSUBDEVICE_CMD_LIST_SUBDEVICES: cmd_list_subdevices(); break;
+
+ default:
+ device.send32(ERROR_BAD_COMMAND);
+ break;
+ }
+}
-Judge Doom wanted to buy ToonTown but Marvin Acme wouldn't sell. Accordingly, Doom asked R.K. Maroon to blackmail Acme. As a result, Doom knew Maroon had shown Roger evidence that Jessica Rabbit was having an affair with Acme. So Doom used the opportunity to kill Acme, hoping everyone would think Roger did it.
+void MainSubdevice::cmd_ping()
+{
+ device.send32(ACK);
+}
-Though Acme's murder is not shown in the movie, what happened is confirmed by Jessica Rabbit's dialogue: Judge Doom killed Marvin Acme and framed Roger Rabbit.
-Para que llegue un jugador a Newell's como refuerzo, antes la directiva rojinegra debe cumplir un paso previo: vender. Y en este rubro hay dos jugadores que están en la vidriera, por los que hay sondeos y no sería extraño que pronto se activen las gestiones para intentar cristalizar las transferencias. Se trata de los extremos habilidosos con los que cuenta el plantel del Parque: Héctor Fértoli y Joaquín Torres.
+void MainSubdevice::cmd_list_subdevices()
+{
+ int size = 9;
+ uint32_t* p = (uint32_t*) (device.txBuffer + 4);
+ *p++ = id();
+
+ Subdevice* subdevice = this;
+ while (subdevice = subdevice->next)
+ {
+ *p++ = subdevice->id();
+ size += 4;
+ }
+ device.finishPacket(size);
+}
-Uno de los jugadores leprosos de mejor torneo fue justamente Fértoli, por el que hay varios clubes interesados en sumarlo. Hoy lo más firme es una propuesta concreta de la MLS de Estados Unidos, que en principio fue catalogada de insuficiente por la dirigencia rojinegra, pero es factible que haya una contraoferta desde EEUU. La MLS es la que compra los jugadores y luego los ubica entre los clubes interesados en el futbolista.
+Device::Device(const uint8_t _address) :
+ address(_address),
+ subdevices(NULL),
+ mainSubdevice(MainSubdevice(0, *this))
+{
+ Serial.begin(115200);
+ rxHead = 0;
+ rxTail = 0;
+ lastRX = millis();
+}
-Por el lado de Joaquín Torres hay un interés del club Sporting de Portugal, que en breve elevará la oferta formal. Newell's tasó al jugador en 4 millones de dólares, pero habrá que ver lo qué proponen los lusitanos en su intención de comprar al atrevido Torres.
-Q:
+void Device::pump()
+{
+ readSerial();
+
+ int rec = rxTail - rxHead;
+ if (rec < 0) rec += RX_BUFFER_SIZE;
+
+ if (rec >= 2)
+ {
+ uint8_t a = rxBuffer[rxHead];
+ uint8_t b = rxBuffer[(rxHead + 1) & RX_BUFFER_MASK];
+ int exp = (b << 8) | a;
+
+ if (exp == rec)
+ {
+ if (exp < 9)
+ {
+ // malformed packet
+ Serial.println("malform"); // TODO
+ rxHead = (rxHead + exp) & RX_BUFFER_MASK;
+ }
+ else if (!checkChecksum())
+ {
+ // failed checksum
+ Serial.println("badchecsum"); // TODO
+ rxHead = (rxHead + exp) & RX_BUFFER_MASK;
+ }
+ else
+ {
+ uint16_t size = consume16();
+ uint8_t deviceAddress = consume8();
+ if (deviceAddress != address)
+ {
+ rxHead = (rxHead + size - 3) & RX_BUFFER_MASK;
+ }
+ else
+ {
+ uint8_t subdeviceAddress = consume8();
+ uint32_t command = consume32();
+ int endOfPacket = (rxHead + size - 8) & RX_BUFFER_MASK;
+ dispatch(subdeviceAddress, command);
+ rxHead = endOfPacket;
+ }
+ }
+ }
+ }
+}
-How to call a MainWindow method from another window?
+void Device::readSerial()
+{
+ if (Serial.available())
+ {
+ uint8_t input = Serial.read();
+ rxBuffer[rxTail++] = input;
+ rxTail &= RX_BUFFER_MASK;
+
+ if (rxTail == rxHead)
+ {
+ // overflow
+ }
+
+ Serial.write(input);// TODO
+ lastRX = millis();
+ }
+ else if (rxTail != rxHead)
+ {
+ uint32_t timeSinceReceive = millis() - lastRX;
+ if (timeSinceReceive >= RX_TIMEOUT)
+ {
+ Serial.println("tieout"); // TODO
+ rxHead = rxTail;
+ }
+ }
+}
-I need to call a method from the MainWindow in another window.
-Problem is i don't know why i got an error and i would like to fix it.
-I tried to call the fonction using various ways, none of them worked.
-Here is my last try :
-What i want to call :
-namespace Class1
+void Device::dispatch(const uint8_t subdeviceAddress, const uint32_t cmd)
{
- public partial class MainWindow : Window
- {
- ...
- public void SkipVideo()
- {
- ...
- }
- }
+ Subdevice* subdevice = subdevices;
+
+ while (subdevice != NULL)
+ {
+ if (subdevice->address == subdeviceAddress)
+ {
+ subdevice->command(cmd);
+ return;
+ }
+ subdevice = subdevice->next;
+ }
+ send32(ERROR_SUBDEVICE_NOT_FOUND);
}
-Here is how i tried to call :
-namespace Class1
+uint8_t Device::consume8()
{
- public partial class TimeWindow : Window
- {
- ...
- private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
- {
- ((MainWindow)Application.Current.MainWindow).SkipVideo();
- }
- }
+ uint8_t a = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ return a;
}
-There is no build error, but when i run the program, it does this :
-System.InvalidCastException: 'Unable to cast object of type 'Class1.TimeWindow' to type 'Class1.MainWindow'.'
+uint16_t Device::consume16()
+{
+ uint8_t a = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ uint8_t b = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ return (((uint16_t)b) << 8) | ((uint16_t) a);
+}
-A:
+uint32_t Device::consume32()
+{
+ uint8_t a = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ uint8_t b = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ uint8_t c = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ uint8_t d = rxBuffer[rxHead++];
+ rxHead &= RX_BUFFER_MASK;
+ return (((uint32_t)d) << 24) | (((uint32_t)c) << 16) | (((uint32_t)b) << 8) | ((uint32_t)a);
+}
-The InvalidCastException means that your application's mainwindow is a TimeWindow.
-Provided that there actually is a MainWindow open, you can get a reference to it like this:
-private void DemoVideo_MediaEnded(object sender, RoutedEventArgs e)
+void Device::send32(const uint32_t msg)
{
- MainWindow mainWindow = Application.Current.Windows.OfType().FirstOrDefault();
- if (mainWindow != null)
- mainWindow.SkipVideo();
+ uint32_t* p = (uint32_t*) (txBuffer + 4);
+ *p = msg;
+ finishPacket(9);
}
-There are better ways to handle this, for example using the MVVM design pattern as suggested by @Christopher, but this is probably the easiest one given your current setup.
+static const uint8_t crc_table[] =
+{
+ 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31,
+ 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65,
+ 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9,
+ 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
+ 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1,
+ 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2,
+ 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe,
+ 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
+ 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16,
+ 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42,
+ 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80,
+ 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
+ 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8,
+ 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
+ 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10,
+ 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
+ 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f,
+ 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b,
+ 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7,
+ 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83,
+ 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef,
+ 0xfa, 0xfd, 0xf4, 0xf3
+};
+bool Device::checkChecksum()
+{
+ uint8_t crc = 0;
-## About this example
-This example is a [quickstart](https://eggjs.org/zh-cn/intro/quickstart.html) of Egg, it includes the basic and comprehensive usages of Egg such as Controller, Service and some
-simple configurations, moreover, it has the corresponding unit tests. you can follow this simple example and build your Egg application step by step.
+ int c = rxHead;
+ int ce = rxTail - 1;
-## How to run it locally
+ while (c != ce)
+ {
+ crc = crc_table[crc ^ rxBuffer[c++]];
+ c &= RX_BUFFER_MASK;
+ }
-### Development
-```shell
-$ npm install
-$ npm run dev
-$ open http://localhost:7001/
-```
+ return crc == rxBuffer[c];
+}
-### Deploy
+void Device::finishPacket(const int len)
+{
+ txBuffer[0] = len & 0xff;
+ txBuffer[1] = len >> 8;
+ txBuffer[2] = 0;
+ txBuffer[3] = 0;
-Use `EGG_SERVER_ENV=prod` to enable prod mode
+ uint8_t crc = 0;
-```shell
-$ EGG_SERVER_ENV=prod npm start
-```
+ uint8_t* p = txBuffer;
+ uint8_t* pe = txBuffer + len - 1;
-### Npm Scripts
+ while(p < pe)
+ {
+ crc = crc_table[crc ^ *p++];
+ }
-- Use `npm run autod` to auto detect dependencies upgrade
-- Use `npm run lint` to check code style
-- Use `npm test` to run unit test
+ *p = crc;
+ Serial.write(txBuffer, len);
+}
-### Requirement
+void Device::AddSubdevice(Subdevice* subdevice)
+{
+ if (subdevices == NULL)
+ {
+ subdevices = subdevice;
+ }
+ else
+ {
+ Subdevice* dev = subdevices;
+ while (dev->next) dev = dev->next;
+ dev->next = subdevice;
+ }
+}
-Please ensure your node version is `>=8.0` for Egg2.x.
-## some problems you might encounter
-- lack of MVC model development experience, click [here](https://www.zhihu.com/question/27897315) to learn more
-- some concepts such as middleware, extend, helper are difficult to understand, see related [docs](https://eggjs.org/) to know more
-- encounter some errors during development, find [issues](https://github.com/eggjs/egg/issues) to check if some solutions have been provided
-Joseph Amoah (sprinter)
+# ExLlama
-Joseph Paul Amoah (born 12 January 1997) is a Ghanaian sprinter specializing in the 100 metres and the 200 metres. He competed at the 2019 World Athletics Championships in the 100 metres and 4 × 100 metres relay, and at the 2019 African Games he won a gold medal in the 4 × 100 metres relay. He was also a 100 metres finalist at the 2019 African Games, finishing fourth.
+A standalone Python/C++/CUDA implementation of Llama for use with 4-bit GPTQ weights, designed to be fast and
+memory-efficient on modern GPUs.
-Amoah has personal best times of 10.01 seconds and 20.08 seconds in the 100 metres and 200 metres respectively, both set at the 2019 NCAA Division I Championships. His personal best performance in the 200 metres broke the Ghanaian record previously held by three-time Olympian Emmanuel Tuffour by 0.07 seconds.
+Disclaimer: The project is coming along, but it's still a work in progress!
-Early life
-Amoah was born on 12 January 1997 to Thomas and Alberta Amoah in Greater Accra, Ghana, and was raised by his uncle Dr. Victor Antwi from middle school onwards. His preferred sport growing up was football, but transitioned to athletics while attending Prempeh College in Kumasi where his running talent was discovered. As a 19-year old he emerged as an Olympic hopeful for Ghana in the sprints after running 100 metres in 10.08 seconds at the 2016 Ghana's Fastest Human competition.
+## Hardware requirements
-University
-After his prep career at Prempeh College, he decided to quit athletics when enrolling into Kwame Nkrumah University of Science and Technology (KNUST). However the head coach of athletics at KNUST had heard of Amoah's talent while at Prempeh college and convinced Amoah to join the team with the help of his uncle. In 2017 he transferred to Coppin State University in Baltimore, which competes in Division I of the National Collegiate Athletic Association (NCAA), the highest level of intercollegiate athletics in the United States.
+I am developing on an RTX 4090 and an RTX 3090-Ti. 30-series and later NVIDIA GPUs should be well supported, but
+anything Pascal or older with poor FP16 support isn't going to perform well.
+[AutoGPTQ](https://github.com/PanQiWei/AutoGPTQ) or [GPTQ-for-LLaMa](https://github.com/qwopqwop200/GPTQ-for-LLaMa)
+are better options at the moment for older GPUs. ROCm is also theoretically supported (via HIP) though I currently
+have no AMD devices to test or optimize on.
-At the 2019 Mid-Eastern Athletic Conference Championships in May, Amoah became the first Ghanaian in any sport to qualify for the 2020 Summer Olympics by running 200 metres in a personal best time in 20.20 seconds. It was the fastest performance from a Ghanaian since 1995 and also qualified him for the 2019 World Athletics Championships. Later in June of that season at the NCAA Division I Championships, he improved his personal best times in the 100 metres and 200 metres to 10.01 seconds and 20.08 seconds respectively. He broke three-time Olympian Emmanuel Tuffour's 24-year old Ghanaian record in the 200 metres (20.15 seconds, set at altitude), and qualified for the 2020 Summer Olympics in the 100 metres.
+## Dependencies
-Achievements
+* Python 3.9 or newer
+* `torch` tested on 2.0.1 and 2.1.0 (nightly) with cu118
+* `safetensors` 0.3.2
+* `sentencepiece`
+* `ninja`
-International championships
+Additionally, only for the web UI:
-National championships
+* `flask`
+* `waitress`
-References
+## Linux/WSL prerequisites
-External links
+ pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu118
-Category:Ghanaian male sprinters
-Category:1997 births
-Category:Living people
-Category:People from Greater Accra Region
-Category:World Athletics Championships athletes for Ghana
-Category:Athletes (track and field) at the 2019 African Games
-Category:African Games medalists in athletics (track and field)
-Category:Coppin State University alumni
-Category:Prempeh College alumni
-Consanguineous unions and endogamy in families of beta-thalassaemia patients from two Mediterranean populations: Tunisia and Italy.
-Background: Consanguinity increases the incidence of recessive diseases such as beta-thalassaemia major (βTM), one of the most prevalent lethal inherited diseases in the world.Aim: This study aims to identify the frequency of endogamy and consanguinity in two Mediterranean βTM populations and to study the implication of socio-economic factors.Subjects and methods: A trans-sectional study was conducted in 203 Tunisian families and 75 Italian families. Data were collected using a questionnaire completed by patients and parents.Results: Complete endogamy and consanguinity were observed in 82.75% and 62.56% of Tunisian families, respectively. Complete endogamy was found in 90.67% of Italian families, no consanguinity was noted. The low occupation status of Tunisian mothers was associated with an increasing frequency of consanguinity (p = .01) and endogamy (p = .0003). Consanguinity was associated with low education level (p = .012) and low occupation status (p=.047) of fathers. No significant association was found between endogamy and socio-economic factors in the Italian sample.Conclusions: High consanguinity and endogamy rates in Tunisian families may explain the frequency of βTM in Tunisia. The high endogamy rate in Italian families could also increase the frequency of βTM. Identification of geographical distribution and socio-economic factors leading to endogamy and consanguinity in these populations might help to improve βTM prevention.
-Purchasing
+## Windows prerequisites
-Violation/Penalties
+To run on Windows (without WSL):
-Purchasing Violations:
+1. Install [MSVC 2022](https://visualstudio.microsoft.com/downloads/). You can choose to install the whole `Visual
+Studio 2022` IDE, or alternatively just the `Build Tools for Visual Studio 2022` package (make sure `Desktop
+development with C++` is ticked in the installer), it doesn't really matter which.
+2. Install the appropriate version of [PyTorch](https://pytorch.org/get-started/locally/), choosing one of the CUDA
+versions. I am developing on the nightly build, but the stable version (2.0.1) should also work.
+3. Install CUDA Toolkit, ([11.7](https://developer.nvidia.com/cuda-11-7-0-download-archive) and
+[11.8](https://developer.nvidia.com/cuda-11-8-0-download-archive) both seem to work, just make sure to match PyTorch's
+Compute Platform version).
+4. For best performance, enable Hardware Accelerated GPU Scheduling.
-What is a purchasing violation?
-Section 31-7-57 of the MS Code states that when an employee receives goods or services without a purchase order, the agency has no liability for the bill. The employee is held personally liable.
+## How to
-A purchasing violation is committed when an employee receives goods or services without a purchase order
+Clone repo, install dependencies, and run benchmark:
-A purchasing violation is when an office prepares intentionally two or more office requisitions to the same vendor when one order combined is greater than $1,500. This is done to avoid getting written quotes/sealed bids. This is called splitting a purchase order.
+ git clone https://github.com/turboderp/exllama
+ cd exllama
-A violation is when an employee personally utilizes a rebate, gift or prize given to the agency by a vendor.
+ pip install -r requirements.txt
-PLEASE NOTE: When any employee orders or receives goods/services in the name of the Department of Education before requesting a purchase order, the employee will be held personally liable for the bill. Do not send the requisition and invoice to Accounting.
+ python test_benchmark_inference.py -d -p -ppl
-UNALLOWABLE AGENCY PURCHASES
+The CUDA extension is loaded at runtime so there's no need to install it separately. It will be compiled on the first
+run and cached to `~/.cache/torch_extensions/` which could take a little while. If nothing happens at first, give it
+a minute to compile.
-Individual membership to professional organizations
+Chatbot example:
-Individual Chamber of Commerce membership
+ python example_chatbot.py -d -un "Jeff" -p prompt_chatbort.txt
-Individual personalization of planners, portfolios or briefcases
+## Python module
-Certificates to state employees, public officials or board members
+jllllll currently maintains an installable Python module [here](https://github.com/jllllll/exllama) which may be more
+suitable for integrating ExLlama with other projects
-Plaques to state employees, public officials or board members
+## Web UI
-Awards to state employees, public officials or board members
+I also made a simple web UI for it. Don't look at the JavaScript, it was mostly written by ChatGPT and it will haunt
+your dreams. But it sort of works, and it's kinda fun, especially multibot mode:
-PENALTIES FOR PURCHASING VIOLATIONS
+![_screenshot.jpg](doc/_screenshot.jpg)
-Reprimands
+To run it:
-Loss of Job
+ pip install -r requirements-web.txt
-Fines
+ python webui/app.py -d
-Imprisonment
+Note that sessions are stored in `~/exllama_sessions/` by default. You can change that location with `-sd` if you want.
-Repayment of misspent funds
+## Docker
-Vendor will re-bill order to the individual
+For security benefits and easier deployment, it is also possible to run the web UI in an isolated docker container. Note: the docker image currently only supports NVIDIA GPUs.
-Sole Source Justification:
-The sole source justification letter should include the following information:
+### Requirements
-What will the product be used for?
+- [Docker](https://docs.docker.com/engine/install/)
+- [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)
-Is it compatible with existing equipment?
+It is recommended to run docker in [rootless mode](https://docs.docker.com/engine/security/rootless/).
-Will the product be used for testing or trial use only?
+### Build
-Do other companies make similiar products that are acceptable?
+The easiest way to build the docker image is using docker compose. First, set the `MODEL_PATH` and `SESSIONS_PATH` variables in the `.env` file to the actual directories on the host. Then run:
-How is the product special or unique?
+```
+docker compose build
+```
-What can this product do that other products cannot do?
+It is also possible to manually build the image:
-Is there a copyright or patent on this product?
+```
+docker build -t exllama-web .
+```
-Is the manufacturer the only distributor?
+NOTE: by default, the service inside the docker container is run by a non-root user. Hence, the ownership of bind-mounted directories (`/data/model` and `/data/exllama_sessions` in the default `docker-compose.yml` file) is changed to this non-root user in the container entrypoint (`entrypoint.sh`). To disable this, set `RUN_UID=0` in the `.env` file if using `docker compose`, or the following command if you manually build the image:
-Does the manufacturer only sell to specific distributors instead of direct sales?
-Introduction {#s1}
-============
+```
+docker build -t exllama-web --build-arg RUN_UID=0 .
+```
-In recent years there has been a substantial increase in the use of mass drug administration (MDA) to reduce the morbidity associated with helminth infections of humans [@pntd.0000211-Lammie1], increasing the probability that anthelmintic resistance may become a public health concern in the future. One such annual MDA programme is the Global Programme to Eliminate Lymphatic Filariasis (GPELF) which, in 2005, treated over 145 million people with albendazole (a broad spectrum benzimidazole anthelmintic) in combination with either ivermectin or diethylcarbamazine [@pntd.0000211-WHO1]. GPELF targets mainly *Wuchereria bancrofti*, the most widely distributed of the filarial parasites of humans.
+### Run
-Sensitive molecular assays are required to detect the presence of anthelmintic resistance before widespread treatment failure is apparent, drug resistance becomes disseminated and disease control is jeopardised [@pntd.0000211-Roos1]. Surveys of helminth parasites of humans are being conducted to establish whether genetic changes at certain polymorphic loci (associated with resistance to the same or related drugs used against veterinary helminths), are present in these populations and subject to detectable selection under chemotherapeutic pressure [@pntd.0000211-Albonico1]--[@pntd.0000211-Schwab1]. A phenylalanine to tyrosine substitution at position 200 on the β-tubulin isotype 1 molecule has been identified in a number of helminth parasites of farmed ruminants including *Haemonchus contortus* [@pntd.0000211-Kwa1],[@pntd.0000211-Kwa2], *Cooperia oncophora* [@pntd.0000211-Njue1], and *Teladorsagia circumcincta* [@pntd.0000211-Elard1] and is associated with benzimidazole (BZ) resistance in these species. Worryingly, this genetic change has also been identified in *W. bancrofti* [@pntd.0000211-Schwab1], though the phenotypic studies relating the substitution to a decreased albendazole efficacy have not been undertaken in this species. To aid clarity the two alleles at position 200 on the β-tubulin isotype 1 molecule shall be referred to as allele *F* (phenylalanine) for susceptibility and allele *Y* (tyrosine) for putative resistance.
+Using docker compose:
-Inbreeding, the mating of related individuals, influences parasite genotype distribution and can affect the selection of adaptive traits. Facets of a species\' biology may cause parasite inbreeding, such as population structure or assortative mating (when mate choice is determined by phenotype). Parasite allele frequency can differ between infrapopulations (the populations of parasites within individual hosts) due to the ecology of the infection or through the random nature of infection events (all groups may have an equal probability of having a rare allele, but actual numbers may vary between groups by chance). Helminth parasites have a particularly subdivided population structure as adult worms are confined within their definitive host, and only able to mate with other worms that belong to the same infrapopulation. The population genetic structure of most helminth species remains unknown. The few studies that have been undertaken indicate that whilst some species appear to have no apparent genetic structure others exhibit a high degree of parasite genetic differentiation between hosts [@pntd.0000211-Criscione1]. The degree of genetic differentiation in the parasite infrapopulation can shed insight into the microepidemiology of parasite transmission [@pntd.0000211-Anderson1]--[@pntd.0000211-Thron1]. Infrapopulation genetic differentiation will also influence helminth population genetics as it causes a reduction in the frequency of heterozygote offspring, a phenomenon known as the Wahlund effect [@pntd.0000211-Hartl1].
+```
+docker compose up
+```
-Studies investigating the inheritance of benzimidazole resistance are lacking, though evidence indicates that thiabendazole resistance in *H. contortus* may be a semi-dominant trait [@pntd.0000211-LeJambre1]. Other authors have postulated that alleles conferring anthelmintic resistance, including allele *Y*, are likely to be recessive [@pntd.0000211-Elard1],[@pntd.0000211-Prichard1], which would make heterozygote worms susceptible to treatment. If an allele conferring drug resistance is recessive, excess parasite homozygosity will increase the probability that a resistance allele will survive treatment. This has been shown using genetic metapopulation models investigating nematodes of grazing animals; these models indicate that the spread of rare recessive genes is promoted by hosts accumulating multiple related infections simultaneously [@pntd.0000211-Cornell1],[@pntd.0000211-Smith1]. The degree of parasite genetic differentiation among hosts can be quantified using *F~ST~* (or related analogues; see [@pntd.0000211-Criscione1] and references therein).
+The web UI can now be accessed on the host at http://localhost:5000.
-The adult stages of the majority of parasitic helminths of humans cannot be obtained routinely for direct investigation, so genetic surveys (including those investigating drug resistance) resort to sampling transmission stages, i.e. those (immature) life-stages that gain access to the environment to be transmitted to and from hosts or through vectors [@pntd.0000211-Schwab1], [@pntd.0000211-Curtis1]--[@pntd.0000211-Shrivastava1]. However, the results of these surveys should be interpreted with caution, as the underlying allele frequency of the adult worm population may differ from the allele frequency of the sampled transmission stages. Variations in transmission stage allele frequency and genotype distribution could be generated randomly or be a product of the parasite\'s spatial structure and life-history traits. For example, population subdivision will cause random variation in adult worm allele frequencies between hosts at low parasite densities. Filarial parasites have separate sexes and are thought to be polygamous [@pntd.0000211-SchulzKey1], which may accentuate the variability in microfilarial allele frequency, e.g. a rare allele may be highly over-represented in the subsequent generation if, by chance, a male worm with this allele inhabits a host harbouring females but no other males. In addition, the inherent random sampling of gametes during sexual reproduction [@pntd.0000211-Weir1], and the overdispersed distribution of parasite numbers among hosts [@pntd.0000211-Anderson2] may cause the allele frequency and genotype distribution to vary by chance from generation to generation.
+The configuration can be viewed in `docker-compose.yml` and changed by creating a `docker-compose.override.yml` file.
-This paper analyses population genetic data collected for a study by Schwab *et al.* [@pntd.0000211-Schwab1] who identified the presence of the β-tubulin allele *Y* in populations of *W. bancrofti*. Firstly, the extent of parasite inbreeding is estimated from *W. bancrofti* microfilarial samples taken from patients in Burkina Faso, West Africa. Samples were obtained from different villages, some of which had received a single round of MDA with ivermectin and albendazole, under the auspices of the GPELF. Secondly, an individual-based stochastic model is presented which simulates microfilarial genetic diversity from adult worm allele frequencies. The model generates sample allele and genotype frequencies using the same number of hosts, and the same number of microfilariae per host as in Schwab *et al.* [@pntd.0000211-Schwab1]. This model is then used to assess whether the observed level of parasite inbreeding is the result of a sampling artefact or a true biological phenomenon. Finally, the model is used to assess the likely range of adult worm allele frequencies which could have given rise to the observed microfilarial data, providing some insight into how genetic surveys which sample transmission stages should be interpreted. We discuss the implications of our results in terms of the development and detection of anthelmintic resistance.
+Run manually:
-Materials and Methods {#s2}
-=====================
+```
+docker run --gpus all -p 5000:5000 -v :/data/model/ -v :/data/exllama_sessions --rm -it exllama-web --host 0.0.0.0:5000
+```
-Sampled data {#s2a}
-------------
-[Table 1](#pntd-0000211-t001){ref-type="table"} summarises the data collected for the study by Schwab *et al.* [@pntd.0000211-Schwab1] and indicates the number of microfilariae and hosts sampled. The village of Gora was removed from the *F*-statistic analysis since only one host was sampled in this village. In some hosts it was possible to genotype only a few microfilariae, increasing the uncertainty associated with estimation of underlying infrapopulation allele frequencies in these hosts. Results are grouped according to parasite treatment history. The average frequencies of allele *Y* in microfilarial samples from untreated and treated hosts were 0.26 and 0.60, respectively [@pntd.0000211-Schwab1]. The degree of parasite heterozygosity (the proportion of microfilariae with the heterozygote genotype) is estimated for each village. The table also indicates the deviation of each population from the Hardy-Weinberg Equilibrium (HWE), which gives the proportion of heterozygote microfilariae that would be expected in a randomly mating population. This reveals a strong deficit of heterozygotes in all three populations.
+## Results so far
-10.1371/journal.pntd.0000211.t001
+### New implementation
+| Model | Size | grpsz | act | Seq. len. | VRAM | Prompt | Best | Worst | Ppl |
+|------------|-------|-------|-----|----------------------|-----------|------------|---------|---------|------|
+| Llama | 7B | 128 | no | 2,048 t | 5,194 MB | 13,918 t/s | 173 t/s | 140 t/s | 6.45 |
+| Llama | 13B | 128 | no | 2,048 t | 9,127 MB | 7,507 t/s | 102 t/s | 86 t/s | 5.60 |
+| Llama | 33B | 128 | no | 2,048 t | 20,795 MB | 2,959 t/s | 47 t/s | 40 t/s | 4.60 |
+| Llama | 33B | 128 | yes | 2,048 t | 20,795 MB | 2,784 t/s | 45 t/s | 37 t/s | 4.55 |
+| Llama | 33B | 32 | yes | 1,550 t 1 | 21,486 MB | 2,636 t/s | 41 t/s | 37 t/s | 4.52 |
+| Koala | 13B | 128 | yes | 2,048 t | 9,127 MB | 5,529 t/s | 93 t/s | 79 t/s | 6.73 |
+| WizardLM | 33B | - | yes | 2,048 t | 20,199 MB | 2,313 t/s | 47 t/s | 40 t/s | 5.75 |
+| OpenLlama | 3B | 128 | yes | 2,048 t | 3,128 MB | 16,419 t/s | 226 t/s | 170 t/s | 7.81 |
-###### Summary of the genetic survey conducted on *Wuchereria bancrofti* microfilariae from Burkina Faso of genetic changes at the β-tubulin locus associated with benzimidazole resistance (in nematodes of ruminants).
+1 Can not achieve full sequence length without OoM
-![](pntd.0000211.t001){#pntd-0000211-t001-1}
+All tests done on stock RTX 4090 / 12900K, running with a desktop environment, with a few other apps also using VRAM.
- Village No. hosts sampled Mean no. of microfilariae genotyped per host (range) Mean microfilaraemia per 20 µl blood (range) Sample (microfilarial) resistance allele frequency, Sample and \[expected\] heterozygosity
- ------------------------------------------------------------------------------ ------------------- ------------------------------------------------------ ---------------------------------------------- ----------------------------------------------------- ----------------------------------------
- Untreated villages
- TANGONKO 16 9.6 (1, 15) 323 (162, 703) 0.28 0.20 \[0.40\]
- BADONGO 14 6.6 (1, 10) 212 (60, 845) 0.23 0.24 \[0.35\]
- Village that had received one round of chemotherapy (albendazole+ivermectin)
- PERIGBAN 13 8.5 (3, 12) 35 (18, 86) 0.62 0.27 \[0.47\]
+**"Prompt"** speed is inference over the sequence length listed minus 128 tokens. **"Worst"** is the average speed for
+the last 128 tokens of the full context (worst case) and **"Best"** lists the speed for the first 128 tokens in an
+empty sequence (best case.)
-Results were presented by Schwab *et al.* [@pntd.0000211-Schwab1]. The range of microfilarial samples obtained per host is given in brackets. The expected microfilariae heterozygosity according to the Hardy-Weinberg equilibrium is given in square brackets.
+VRAM usage is as reported by PyTorch and does not include PyTorch's own overhead (CUDA kernels,
+internal buffers etc.) This is somewhat unpredictable anyway. Best bet is to just optimize VRAM usage by the model,
+probably aiming for 20 GB on a 24 GB GPU to ensure there is room for a desktop environment and all of Torch's
+internals.
-In this paper, we refer to two different types of allele frequency: (1) the underlying frequency of the allele putatively associated with BZ resistance, with *q^l^* denoting the allele frequency of the entire parasite population of a given locality, and (2) the parasite allele frequency within the host population that is sampled, denoted by *^H^q^l^*. The superscript *l* denotes the parasite life-stage under investigation, be it microfilariae (*l = M*) or adult worms (*l = W*), and *H* denotes definitive host. The allele frequency estimated from the sample, , may not correspond to the true underlying allele frequency, *q^l^*, either because the hosts sampled are not representative of the whole host population, or because the parasites genotyped do not represent adequately the allele frequency within the host.
+Perplexity is measured only to verify that the models are working. The dataset used is a particular, small sample from
+WikiText, so scores are not comparable to other Llama benchmarks and only useful for comparing the different Llama
+models to one another.
-Estimating parasite inbreeding {#s2b}
-------------------------------
+### Dual GPU results
-By genotyping transmission stages before they leave the definitive host prior to the introduction of mass chemotherapy, insight can be gained into the different causes of microfilarial excess homozygosity. If it is assumed that the number of microfilariae produced, their survival, and their probability of being sampled are independent of their genotype (as we do in the null model), it can be assumed that deviation from the HWE may be the result of non-random mating. If the locus being investigated is not under selection, the excess microfilarial homozygosity will most likely be the result of either infrapopulation genetic differentiation or non-random parasite mating within hosts. Genotyping transmission stages would allow the relative contributions of each of these two sources of inbreeding to be estimated. The variation in the allele frequency between hosts will account for some of the excess homozygosity whilst deviation from the HWE in the microfilariae within an individual host will indicate possible non-random mating within the infrapopulation.
+The following benchmarks are from a 4090 + 3090-Ti with `-gs 17.2,24`:
-The Wright\'s hierarchical *F*-statistic is used to investigate the correlation of parasite genes within and between human hosts [@pntd.0000211-Curtis1]--[@pntd.0000211-Paterson1],[@pntd.0000211-Brouwer1]. It is assumed that the infrapopulation is the first hierarchical group in the parasite population, and *F~IS~* is defined as the correlation of genes between microfilariae within the infrapopulation; , as the correlation of microfilarial genes between different hosts living in the same village; , as the correlation of microfilarial genes between different villages within the overall microfilarial population; and *F~IT~*, as the correlation of genes between individual microfilariae relative to the overall microfilarial population of the region. The different inbreeding terms introduced are summarized in [Table 2](#pntd-0000211-t002){ref-type="table"}. A value of *F~IS~* is significantly greater than zero points towards adult worm non-random mating, indicates variation in worm allele frequency between hosts, and suggests differences in the worm allele frequency between villages. The same statistical frameworks used to estimate Wright\'s *F*-statistic were employed here, taking into account variable sample sizes [@pntd.0000211-Weir1]. Estimates of the 95% confidence intervals for *F~IS~*, and *F~IT~*, were generated by bootstrapping simultaneously worms within each host and bootstrapping over hosts within each village [@pntd.0000211-Efron1]. *F-*statistics, and their associated uncertainty, were calculated for each village.
+| Model | Size | groupsize | act | Seq. len. | VRAM | Prompt | Best | Worst | Ppl |
+|---------|------|-----------|-----|----------------|-----------|-----------|--------|---------|-------|
+| Llama | 65B | 128 | yes | 2,048 t | 39,804 MB | 1,109 t/s | 20 t/s | 18 t/s | 4.20 |
+| Llama | 65B | 32 | yes | 2,048 t | 43,424 MB | 1,037 t/s | 17 t/s | 16 t/s | 4.11 |
+| Llama-2 | 70B | 128 | yes | 2,048 t | 40,680 MB | 914 t/s | 17 t/s | 14 t/s | 4.15 |
+| Llama-2 | 70B | 32 | yes | 2,048 t | 36,815 MB | 874 t/s | 15 t/s | 12 t/s | 4.10 |
-Modelling the allele frequency and genotype distribution of microfilariae {#s2c}
--------------------------------------------------------------------------
+Note that perplexity scores may not be strictly apples-to-apples between Llama and Llama 2 due to their different
+pretraining datasets.
-A dioecious adult worm helminth population with a 1:1 male to female ratio was randomly generated for a given mean number of worms per host and degree of parasite overdispersion (as determined by the *k* parameter of the negative binomial distribution, parameterized following [@pntd.0000211-Anderson2]). Each adult worm infrapopulation was randomly allocated an allele frequency, as analysis of pre-treatment data did not detect any significant relationship between the host\'s frequency of allele *Y* and microfilarial burden. The adult worm allele frequency of each host was randomly selected according to the given underlying allele frequency, *q^W^*, and the degree of parasite genetic differentiation between hosts, . For a description of a method for generating the distribution of allele frequencies in a subdivided population using the beta distribution [@pntd.0000211-Wright1], see Porter [@pntd.0000211-Porter1].
+## Todo
-It is again assumed that microfilarial production and survival is independent of genotype, allowing a microfilarial population for each host *i* to be generated according to the size and allele frequency of the adult worm infrapopulation. Worms were assumed to be polygamous; implying that if only one male parasite were present within a host, all fertile females within that infrapopulation would be mated. The number of microfilariae produced by each parasite infrapopulation was assumed to be proportional to the number of fertilised females within that host. It was also assumed that gametes separate independently and re-assort according to the degree of non-random mating (*F~IS~*). The probability with which a microfilaria within host *i*, will be of genotype *j* is denoted , and given by the equations, where and are, respectively, the frequency of allele *Y* in the male and female adult worms within host *i*, and and are the corresponding susceptible allele *F* frequencies. To allow random stochastic fluctuations in genotype distribution, the actual number of microfilariae in host *i* with genotype *j* follows a binomial distribution, with the number of trials being equal to the number of microfilariae produced by host *i*, with genotype probability equal to .
+Moved the todo list [here](doc/TODO.md).
-Microfilarial allele frequencies and genotype distributions were generated by sampling a specific number of microfilariae from the generated hypothetical population according to the sampling scheme used in Schwab *et al.* [@pntd.0000211-Schwab1]. The exact number of samples taken from each of the 30 hosts was: 11, 10, 15, 9, 11, 9, 13, 10, 10, 7, 10, 10, 7, 1, 11, 9, 1, 7, 4, 1, 10, 9, 8, 6, 4, 6, 9, 10, 10, 8, for a total of 246 microfilariae. Analysis of pre-treatment data had indicated that the number of samples taken from each host by Schwab *et al.* [@pntd.0000211-Schwab1] was independent of host microfilaraemia and host allele frequency, allowing the number of microfilariae sampled per host to be randomly allocated. The program code for the simulations implemented was written in C++ and run 100,000 times, with each run generating a new helminth population and genotype distribution from which 95% confidence limits (95% CL) were calculated.
+## Compatibility
-The model was parameterised for the untreated villages of Tangonko and Badongo, Burkina Faso, which had an initial prevalence of microfilaraemia of 25%. The mean adult worm burden was estimated from observed microfilarial counts using the functional relationship given in the deterministic model EPIFIL (see original formulation and parameter values in Norman *et al*. [@pntd.0000211-Norman1]), giving a mean adult worm burden of 13.5 host^−1^. The degree of adult worm overdispersion was estimated from the recorded microfilarial prevalence (taken here as a proxy for the prevalence of adult worms producing microfilariae) and the mean adult worm burden, using the prevalence vs. intensity relationship that derives from assuming a negative binomial distribution of worms among hosts [@pntd.0000211-Anderson2], yielding a *k* value of 0.07. The model outlined above will only be valid for comparisons against the pre-treatment data, since chemotherapy is known to impede microfilarial production and / or survival [@pntd.0000211-Tisch1].
+[Here](doc/model_compatibility.md) is a list of models confirmed to be working right now.
-The null model assumes that mating is random between male and female worms within each infrapopulation and that allele *Y* is randomly distributed across hosts, i.e. . Results of the inbreeding analysis can be incorporated into the individual-based model described in equations (1) to (3) to explore the range of adult worm allele frequencies which can give rise to the observed microfilarial data.
-Results {#s3}
-=======
+import * as util from "./util.js";
+import * as mainmenu from "./mainmenu.js";
+import * as globals from "./globals.js";
+import * as controls from "./controls.js";
+import * as overlay from "./overlay.js";
-The observed microfilarial genotype distribution was found to deviate from HWE. Villages with no history of mass anthelmintic chemotherapy had an overall inbreeding coefficient of *F~IT~* = 0.44 (95% CL = 0.17, 0.68), indicating strong inbreeding. Fifteen percent of the microfilariae were found to be homozygous for allele *Y*, an estimate 2.3 times higher than would be expected in a random mating parasite population. Results indicate the occurrence of a significant degree of genetic differentiation in worm allele frequency among the host population . Infrapopulation allele *Y* frequency, , varied from 0 to 0.77 in the villages with no history of treatment, indicating an increase in microfilarial homozygosity of 60% above HWE. The results also suggest a degree of non-random mating within hosts measured by *F~IS~* = 0.29 (−0.09, 0.54), which is however is not significantly greater than zero. No difference was observed in the microfilarial allele frequency between the two treatment-naïve villages .
+export class NotepadSettings {
+ constructor(parent) {
+ this.element = util.newHFlex();
+ this.parent = parent;
+ this.settings = this.parent.notepadSettings;
+ //console.log(this.settings);
+ this.populate();
+ }
-The data from the two treatment-naïve villages of Tangonko and Badongo were analysed separately. Both showed a high level of microfilarial homozygosity, with overall inbreeding coefficient of *F~IT~* = 0.51 (0.16, 0.76) and *F~IT~* = 0.33 (−0.10, 0.78), respectively ([Figure 1](#pntd-0000211-g001){ref-type="fig"}). The degree of parasite genetic differentiation between hosts varied between the two villages, though the difference was not statistically significant (*p* = 0.38, calculated from the square of the normalized difference in *F~ST~* estimates [@pntd.0000211-Little1]). For the purpose of the following analysis the two treatment-naïve villages have been grouped together to increase the study sample size. A similar degree of parasite inbreeding was observed in the village of Perigban which had received one round of MDA.
+ populate() {
+ this.element.innerHTML = "";
-![Estimates of Wright\'s *F*-statistics in *Wuchereria bancrofti* for the pre-treatment villages of Tangonko (black diamonds), Badongo (grey open circles) and for the treated village of Perigban (black squares), which received one round of chemotherapy (albendazole+ivermectin).\
-The error bars are the 95% confidence intervals. *F~IT~* estimates the total degree of parasite inbreeding; *F~IS~* describes the level of non-random mating within the infrapopulation; and shows the variation in microfilarial allele frequency within the host subpopulation (village).](pntd.0000211.g001){#pntd-0000211-g001}
+ this.sss_genParams = new controls.CollapsibleSection(null, "Generation parameters");
+ this.sss_sampling = new controls.CollapsibleSection(null, "Sampling");
+ this.element.appendChild(this.sss_genParams.element);
+ this.element.appendChild(this.sss_sampling.element);
-Parasite inbreeding increases the range of underlying adult worm allele *Y* frequencies, *q^W^*, which can give rise to the observed microfilarial allele *Y* frequency of 0.26 ([Figure 2](#pntd-0000211-g002){ref-type="fig"}). Results from the null model, where mating was assumed to be random and allele *Y* is randomly distributed amongst hosts, indicate that *q^W^* in the untreated villages of Tangonko and Badongo could range from 0.21 to 0.32. If we use the excess inbreeding estimate reported in pre-treatment villages (*F~IT~* = 0.44), then model simulations suggest that *q^W^* could range from 0.18 to 0.37.
+ // Generation params
-![The impact of inbreeding on the relationship between the sample microfilarial allele frequencies, , and the (inferred) underlying adult worm allele frequency, *q^W^*, for the substitution at codon 200 of the β-tubulin gene in *W. bancrofti*.\
-The figure shows 95% confidence intervals for a population with no excess inbreeding (the null model, dark grey shaded area), and a population with the observed levels of inbreeding (*F~IS~* = 0.28, , light grey shaded area). Simulations are based on the same sampling scheme used in Burkina Faso [@pntd.0000211-Schwab1]. The thick black solid line indicates the mean result for both models. The observed pre-treatment microfilarial allele frequency (; black thin, horizontal dotted line) was compared to simulation results to indicate the possible range of adult worm allele frequencies which could have given rise to the West African data. The null model (black vertical dotted-dashed lines) indicated values of *q^W^* ranging from 0.21 to 0.32 compared to the inbred model (*F~IS~* = 0.28, , black vertical dashed lines), which gave values of *q^W^* between 0.18 and 0.37.](pntd.0000211.g002){#pntd-0000211-g002}
+ this.sss_i_maxTokens = new controls.SettingsSlider("sss-item-left", "Max tokens", "sss-item-mid", "sss-item-right sss-item-textbox-r", 0, 16, 2048, null, this.settings, "maxtokens", () => { this.updateView(true); });
+ this.sss_i_chunkTokens = new controls.SettingsSlider("sss-item-left", "Chunk tokens", "sss-item-mid", "sss-item-right sss-item-textbox-r", 0, 16, 2048, null, this.settings, "chunktokens", () => { this.updateView(true); });
+ this.sss_stopConditions = new controls.CollapsibleSection(null, "Stop conditions");
+ this.sss_genParams.inner.appendChild(this.sss_i_maxTokens.element);
+ this.sss_genParams.inner.appendChild(this.sss_i_chunkTokens.element);
+ this.element.appendChild(this.sss_stopConditions.element);
-The microfilarial genotype diversity model indicates that the observed homozygosity is unlikely to be solely a result of genetic sampling, demographic stochasticity, population subdivision, or the sampling scheme employed, suggesting that true biological mechanisms are operating in the parasite population even before the introduction of anthelmintic therapy. [Figure 2](#pntd-0000211-g002){ref-type="fig"} indicates the range of likely microfilarial genotype distributions that can be generated from a given *q^W^* value using the null (random) model. The observed excess homozygosity in the untreated villages was greater than the 95% confidence interval estimates generated by the null model ([Figure 3](#pntd-0000211-g003){ref-type="fig"}). It is interesting to note the wide range of microfilarial genotype distributions that can be generated by the null model.
+ // Sampling
-![De Finetti diagram showing the genotype distribution of *W. bancrofti* microfilariae generated from a given underlying adult worm allele frequency, *q^W^*, taken from villages prior to the introduction of chemotherapy.\
-A full explanation of the De Finetti diagram is given in [@pntd.0000211-Hartl1]. The black diamond represents the value originating from the observed data (with , and *F~IT~* = 0.44), and the error bars indicate the uncertainty in genotype distribution stemming from the values of *q^W^* (0.21, 0.32) that were estimated from the null (random) model ([Figure 2](#pntd-0000211-g002){ref-type="fig"}). Y indicates the allele coding for tyrosine at position 200 of β-tubulin that is associated with benzimidazole (BZ) resistance in nematodes of livestock, and F denotes the allele (coding for phenylalanine) indicative of BZ susceptibility. The solid-black curve represents the Hardy-Weinberg equilibrium (HWE). The null model generating microfilarial allele frequencies (see text) was used to investigate the range of sample microfilarial genotype distributions that could be obtained from a population exhibiting no excess inbreeding (i.e. assuming that the underlying adult parasite population would have values of ). Simulations mimic the same sampling scheme described in Schwab *et al*. The observed microfilarial genotype distribution falls outside the 95% confidence interval range (grey shaded area surrounding the HWE curve) generated by the null model, despite the uncertainty in the underlying *q^W^* estimates, indicating strong parasite inbreeding even before introduction of antifilarial combination therapy.](pntd.0000211.g003){#pntd-0000211-g003}
+ this.sss_i_temperature = new controls.SettingsSlider("sss-item-left", "Temperature", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0, 3, null, this.settings, "temperature", () => { this.updateView(true); });
+ this.sss_i_topK = new controls.SettingsSlider("sss-item-left", "Top K", "sss-item-mid", "sss-item-right sss-item-textbox-r", 0, 0, 1000, { "0": "off" }, this.settings, "top_k", () => { this.updateView(true); });
+ this.sss_i_topP = new controls.SettingsSlider("sss-item-left", "Top P", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0, 1, { "0.00": "off", "1.00": "off" }, this.settings, "top_p", () => { this.updateView(true); });
+ this.sss_i_minP = new controls.SettingsSlider("sss-item-left", "Min P", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0, 1, { "0.00": "off", "1.00": "off" }, this.settings, "min_p", () => { this.updateView(true); });
+ this.sss_i_tfs = new controls.SettingsSlider("sss-item-left", "TFS", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0, 1, { "0.00": "off", "1.00": "off" }, this.settings, "tfs", () => { this.updateView(true); });
+ this.sss_i_typical = new controls.SettingsSlider("sss-item-left", "Typical", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0, 1, { "0.00": "off", "1.00": "off" }, this.settings, "typical", () => { this.updateView(true); });
+ this.sss_i_repPenalty = new controls.SettingsSlider("sss-item-left", "Rep. penalty", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 1, 3, { "1.00": "off" }, this.settings, "repp", () => { this.updateView(true); });
+ this.sss_i_repRange = new controls.SettingsSlider("sss-item-left", "Rep. range", "sss-item-mid", "sss-item-right sss-item-textbox-r", 0, 0, 4096, { "0": "off" }, this.settings, "repr", () => { this.updateView(true); });
-Despite the large increase in microfilarial homozygosity attributable to parasite inbreeding, there is only a modest increase in the prevalence of hosts who have microfilariae that are homozygous for allele *Y* (and therefore putatively resistant if the allele confers drug resistance were recessive, [Figure 4](#pntd-0000211-g004){ref-type="fig"}). Parasite overdispersion reduces the number of hosts who are microfilaria-positive and concentrates allele *Y* into a small proportion of the host population. A high degree of parasite non-random mating and infrapopulation genetic differentiation increases the number of hosts (and the number of samples per host) that need to be sampled, in order to detect or quantify reliably parasite genetic diversity ([Figure 4](#pntd-0000211-g004){ref-type="fig"}). The model is used to investigate how parasite inbreeding may influence the sampling scheme of genetic surveys seeking to identify the presence of a known marker for drug resistance ([Figure 5](#pntd-0000211-g005){ref-type="fig"}). Results indicate that the observed level of parasite inbreeding markedly increases the minimum number of hosts, and the overall number of samples necessary to be 95% confident of detecting a rare allele. The sampling scheme used within [Figure 5](#pntd-0000211-g005){ref-type="fig"} assumes that the number of parasites genotyped per host is weighted by the host\'s microfilarial load. This improves the accuracy of allele frequency estimates by allowing heavily infected hosts to have a greater contribution to the sampled microfilarial population, something which is particularly important in overdispersed parasite populations.
+ this.sss_i_mirostat = new controls.CheckboxLabel("sss-item-right clickable", "Mirostat", this.settings, "mirostat", () => { this.updateView(true); });
+ this.sss_i_mirostat_tau = new controls.SettingsSlider("sss-item-left", "Mirostat tau", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0.01, 10, null, this.settings, "mirostat_tau", () => { this.updateView(true); });
+ this.sss_i_mirostat_eta = new controls.SettingsSlider("sss-item-left", "Mirostat eta", "sss-item-mid", "sss-item-right sss-item-textbox-r", 2, 0.01, 5, null, this.settings, "mirostat_eta", () => { this.updateView(true); });
-![The impact of inbreeding on the relationship between the mean proportion of hosts harbouring microfilariae with one or two copies of allele *Y* and the (assumed) underlying adult worm allele frequency, *q^W^.*\
-The figure compares the proportion of hosts exhibiting microfilariae with allele *Y* (i.e. both heterozygous and homozygous *YY* microfilariae, solid lines) with that of hosts which have only microfilariae with the homozygous *YY* genotype (broken lines). Model outcomes are compared for two hypothetical parasite populations; the former (thin grey lines) without excess inbreeding (generated by the null model), and the latter (thick black lines) with the levels of inbreeding (*F~IS~* = 0.28, ) observed in the Burkina Faso data. Simulations used the same sampling scheme described in Schwab *et al.* [@pntd.0000211-Schwab1] and assume an overall microfilarial prevalence of ∼25% (see text).](pntd.0000211.g004){#pntd-0000211-g004}
+ this.sss_sampling.inner.appendChild(this.sss_i_temperature.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_topK.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_topP.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_minP.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_tfs.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_typical.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_repPenalty.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_repRange.element);
-![The impact of helminth inbreeding on the minimum number of microfilaria-positive hosts who should be sampled and the minimum number of microfilariae that should be genotyped to be 95% confident of detecting at least one rare allele.\
-A randomly mating population (, grey open squares) is compared to an inbred population (*F~IS~* = 0.28 and , black diamonds). The underlying adult worm allele frequency of both populations is set at *q^W^* = 0.05. Each data point represents 100,000 runs of the stochastic model generating microfilarial allele frequencies. The number of microfilariae analysed per host is proportional to host microfilaraemia.](pntd.0000211.g005){#pntd-0000211-g005}
+ this.sss_sampling.inner.appendChild(this.sss_i_mirostat.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_mirostat_tau.element);
+ this.sss_sampling.inner.appendChild(this.sss_i_mirostat_eta.element);
-To date there is no phenotypic evidence that allele *Y* causes albendazole resistance in *W. bancrofti*. However, if an allele conferring drug resistance existed in populations of this parasite then the consequences on the spread of such an allele of parasite non-random mating and genetic differentiation between hosts will depend on the frequency and the relative dominance of the resistance allele. If the resistance allele were recessive, helminth inbreeding would greatly increase the probability that a parasite survives anthelmintic treatment. This is evident from [Figure 6](#pntd-0000211-g006){ref-type="fig"} which shows the influence of parasite inbreeding on the relative proportion of resistant genotypes for a given allele frequency. With a recessive resistance allele at a frequency of 0.05, the degree of inbreeding within the *W. bancrofti* population reported here, would on average increase the number of worms with the homozygote resistance genotype nine-fold. Conversely, if the resistance allele was dominant, inbreeding would reduce the probability that a parasite survives chemotherapy, as fewer worms would have the resistant allele (the deficiency of heterozygous parasites caused by parasite inbreeding will be greater than the increase in resistant homozygous worms).
+ // Stop conditions
-![The impact of the observed level of parasite inbreeding on the production of resistant microfilariae.\
-The graph gives the relative change in the number of resistant genotypes in an inbred parasite population compared to that in a population at HWE. Results are shown for different resistance allele frequencies. The graph assumes that a known resistance allele is either recessive (A), black lines, or dominant (B), grey lines. The inbreeding coefficients are those reported in [Figure 1](#pntd-0000211-g001){ref-type="fig"}: mean result (*F~IT~* = 0.44, solid line); upper 95% confidence limit (*F~IT~* = 0.68, dashed line); lower 95% confidence limit (*F~IT~* = 0.17, dotted line). The relative change in the number of resistant genotypes caused by parasite inbreeding is estimated as in (A) and in (B).](pntd.0000211.g006){#pntd-0000211-g006}
+ this.populate_stop_conditions();
-10.1371/journal.pntd.0000211.t002
+ this.updateView();
+ }
-###### The extension of Wright\'s *F*-statistic to represent the hierarchical population structure of obligate parasites of humans, exemplified in this paper with *Wuchereria bancrofti* (adapted from [@pntd.0000211-Hartl1] and [@pntd.0000211-Weir1]).
+ populate_stop_conditions() {
+ this.sss_stopConditions.inner.innerHTML = "";
+ this.sss_i_stopconditions = [];
+
+ for (let i = 0; i < this.settings.stop_conditions.length; i++) {
+ this.sss_i_stopconditions[i] = new controls.CheckboxTextboxButton(
+ "stop_condition_" + i,
+ "sss-item-left",
+ "Incl.",
+ "sss-item-mid sss-item-textbox",
+ "",
+ this.settings,
+ "stop_conditions",
+ i,
+ "text",
+ "inclusive",
+ (v) => { return v != ""; },
+ () => { this.updateView(true); },
+ "✕ Remove",
+ () => {
+ this.settings.stop_conditions.splice(i, 1);
+ this.populate_stop_conditions();
+ this.updateView(true);
+ }
+ );
+ }
-![](pntd.0000211.t002){#pntd-0000211-t002-2}
+ for (let i = 0; i < this.settings.stop_conditions.length; i++)
+ this.sss_stopConditions.inner.appendChild(this.sss_i_stopconditions[i].element);
- Symbol Definition
- --------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- *F~IT~* Correlation of alleles within individual worms relative to alleles drawn at random from the overall worm population (total deviation from the Hardy-Weinberg Equilibrium)
- *F~IS~* Correlation of alleles within individual worms relative to alleles drawn at random from the parasite infrapopulation (within host non-random mating)
- Correlation of parasite alleles within parasite infrapopulations relative to alleles drawn at random from parasites within the same village (parasite genetic differentiation between hosts within villages)
- Correlation of parasite alleles within a village relative to alleles drawn at random from the overall worm population (parasite genetic differentiation between villages)
+ if (this.settings.stop_conditions.length < 10) {
+ this.sss_i_addStopCondition = new controls.LinkButton("+ Add...", null, () => {
+ this.settings.stop_conditions.push({text: "", inclusive: false});
+ this.populate_stop_conditions();
+ this.updateView(true);
+ }, "sss-item-link");
+ this.sss_stopConditions.inner.appendChild(this.sss_i_addStopCondition.element);
+ }
+ }
-The table includes a graphical representation of the different *F*-statistics.
+ updateView(send = false) {
-Discussion {#s4}
-==========
+ // Settings visibility
-The genotype distribution of *W. bancrofti* microfilariae varied dramatically from the HWE prior to the introduction of MDA. The degree of excess homozygosity reported falls outside the range of values generated by the null model described in this paper, indicating a significant degree of parasite non-random mating. This may be caused, in part, by parasite genetic differentiation between hosts. The null model generates a wide range of microfilarial allele frequencies and genotype distributions indicating that caution should be exercised when interpreting results obtained by sampling solely transmission stages. Significant changes in the genetic diversity of microfilarial populations over time may not reflect a significant change in the underlying adult worm population. This result highlights the crucial importance of developing sound theoretical null models that enable helminth population genetics data to be interpreted adequately [@pntd.0000211-Prugnolle2]. These models should take into account the uncertainty in outcomes, given the sampling scheme employed and the life-history traits of the parasite. A combination of sampling transmission stages and parasite inbreeding could cause estimates of the underlying adult worm allele frequency to be highly variable, increasing the number of samples that need to be genotyped in order to detect significant changes in the adult worm genome with time after introduction of chemotherapeutic pressure.
+ let mirostat = this.settings.mirostat;
+ this.sss_i_mirostat_tau.setVisible(mirostat);
+ this.sss_i_mirostat_eta.setVisible(mirostat);
-Producing a null model to assess the range of adult worm allele frequencies that could give rise to the microfilarial genetic diversity observed in villages having received treatment is complex and beyond the scope of this paper. A dynamic, full transmission model would be required that takes into account the pharmacodynamic properties of the drugs in combination and separately, as the effects of chemotherapy will influence microfilarial genetic diversity for a number of years after chemotherapy. As a result it is not possible to conclude whether adult worm genetic diversity differs between the villages that have and have not received MDA, even though their microfilarial populations differ significantly in their genetic diversity.
+ // Send
-The results presented within this paper regarding the metapopulation dynamics of bancroftian filariasis stem from the analysis of a single nucleotide polymorphism in one gene. Further surveys, using multiple neutral polymorphic loci, are required to distinguish demographic and sampling effects from selective pressures [@pntd.0000211-Weir1]. If the allele of interest has been under selection then the observed genotype distribution could have been generated without the need for non-random parasite mating. The accuracy of the model developed here to derive microfilarial genetic diversity is limited by uncertainties regarding the biology of *W. bancrofti*. Results are dependent on our current ability to mimic adult worm burden and its distribution among hosts. Limitations inherent in the EPIFIL model, the presence of amicrofilaraemic yet circulating filarial antigen-positive infections, and possible heterogeneity in host immune responses could make adult worm burden estimates highly uncertain from microfilarial prevalence and intensity data. The relationship between the number of adult filariae and the rate of microfilarial production is likely to be complex and may depend on the immune responses elicited during the infection. The null model assumes a mean parasite intensity of 13.5 adult worms per host, though sensitivity analysis indicated that model results were relatively insensitive to small changes in parasite intensity around this value (sensitivity analysis ranged from 8.5 to 18.5 adult worms host^−1^, results not shown). Our conclusions are based on the adequacy of the null model, which may be improved by the inclusion of further biological detail. For example, recent evidence suggests a possible association between β-tubulin genotype in the related filarial parasite, *Onchocerca volvulus*, and female worm fertility [@pntd.0000211-Bourguinat1],[@pntd.0000211-Bourguinat2], suggesting a cost of resistance. Whilst the same gene has been analyzed in the current study, it is not known whether a similar relationship between genotype and fertility applies to *W. bancrofti*. If this were the case then the conclusions drawn regarding the causes of the observed genotype distribution should be treated with caution. Although no differences were seen in genotype frequency between the two pre-treatment villages studied, additional baseline surveys (prior to the start of MDA) would be required before firm conclusions regarding the true underlying frequency of allele *Y* in pre-treatment *W. bancrofti* populations can be drawn.
+ if (send) this.send();
+ //console.log(this.settings);
+ }
-Notwithstanding the fact that the *F*-statistic provides a phenomenological tool rather than a mechanistic measure of inbreeding (and therefore does not describe the biological processes generating excess homozygosity), we proceed to propose some likely causes for the strong degree of non-random mating identified in *W. bancrofti*, as well as the implications that this may have for the development and detection of anthelmintic resistance.
+ send(post = null) {
+ //console.log(this.settings);
+
+ let packet = {};
+ packet.settings = this.settings;
+ if (!this.parent.notepadID || this.parent.notepadID == "new") {
+ fetch("/api/new_notepad", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(packet) })
+ .then(response => response.json())
+ .then(response => {
+ this.parent.parent.lastNotepadUUID = response.notepad.notepad_uuid;
+ this.parent.parent.onEnter();
+ if (post) post(response);
+ });
+ } else {
+ fetch("/api/update_notepad_settings", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(packet) })
+ .then(response => response.json())
+ .then(response => {
+ if (post) post(response);
+ });
+ }
+ }
-Non-random infrapopulation mating {#s4a}
----------------------------------
-Our results suggest that adult *W. bancrofti* worms do not mate randomly within the infrapopulation. This is in agreement with ultrasonography studies that show adult parasites congregating in 'worm nests' along lymphatic vessels, which remain stable over time [@pntd.0000211-Dreyer1]. Spatial heterogeneity within the host may produce multiple reproducing populations within each infrapopulation, which would increase host microfilarial homozygosity. Evidence of an apparent relationship between β-tubulin genotype, the same gene analyzed by Schwab *et al.* [@pntd.0000211-Schwab1], and female worm fertility in the related filaria *O. volvulus* has been reported by Bourguinat *et al.* [@pntd.0000211-Bourguinat2]. If such a relationship exists in *W. bancrofti*, the excess within-host homozygosity reported above may result from the increased fertility of homozygous adult worms. Anthelmintic treatment, prior to the introduction of MDA for lymphatic filariasis, may also have increased non-random mating depending on the selective advantage that allele *Y* may confer to the parasite at the time of treatment.
-Parasite genetic differentiation between hosts {#s4b}
-----------------------------------------------
+}
-The degree of genetic differentiation in the parasite infrapopulation can shed insight into the microepidemiology of parasite transmission [@pntd.0000211-Anderson1]--[@pntd.0000211-Thron1]. The metapopulation transmission dynamics of *W. bancrofti* will depend on the transmission efficiency and biting behaviour of the mosquito vector. *Anopheles gambiae sensu stricto* and *An. funestus* are thought to be the main vectors of *W. bancrofti* in Burkina Faso [@pntd.0000211-Gyapong1]. Hosts can acquire multiple L3 larvae during the same bite. Although density-dependent processes are known to operate on the uptake and development of *W. bancrofti* in *An. gambiae*, infective vectors will regularly transmit multiple related L3 larvae simultaneously [@pntd.0000211-Snow1]. Other mosquito vectors of *W. bancrofti* have even greater vector competence. For example, up to 32 L3 larvae were recovered from an experimental host after it was bitten by a single *Culex quinquefasciatus* [@pntd.0000211-Gasarasi1], a main vector in East Africa. Mark-recapture studies and bloodmeal analysis indicate that various mosquito species appear to have high site fidelity, regularly biting multiple members of the same household [@pntd.0000211-McCall1],[@pntd.0000211-Michael1]. These aspects of *W. bancrofti* transmission increase the likelihood that a host will be infected with closely related parasites and will contribute to the observed genetic differentiation.
-More generally, drug treatment may increase infrapopulation genetic heterogeneity, as those parasites within treated hosts which survive treatment may have a higher resistance allele frequency than those harboured within untreated hosts. In Burkina Faso, lymphatic filariasis is treated with albendazole and ivermectin. Evidence indicates that the albendazole plus ivermectin combination has some macrofilaricidal and reproductive effects (mainly associated with albendazole [@pntd.0000211-Tisch1]), as well as the microfilaricidal effect (mainly associated with ivermectin). It is possible that a degree of the genetic differentiation between hosts observed in the untreated villages may have resulted from individual members of the community seeking, for instance, treatment for geohelminth infection prior to the introduction of GPELF.
+input[type=range] {
+ -webkit-appearance: none;
+ margin: 4px 0;
+ width: 100%;
+ background: transparent;
+}
+input[type=range]:focus {
+ outline: none;
+}
+input[type=range]::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 6.4px;
+ cursor: pointer;
+ box-shadow: 1px 1px 1px #00000020, 0px 0px 1px #0d0d0d40;
+ background: var(--slider-track-color);
+ border-radius: 1.0px;
+ border: 0.2px solid #01010120;
+}
+input[type=range]::-webkit-slider-thumb {
+ box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40;
+ border: 1px solid #00000080;
+ height: 16px;
+ width: 16px;
+ border-radius: 3px;
+ background: var(--slider-thumb-color);
+ cursor: pointer;
+ -webkit-appearance: none;
+ margin-top: -5px;
+}
+input[type=range]:hover::-webkit-slider-runnable-track {
+ /* background: var(--slider-hover-color);*/
+}
+input[type=range]::-moz-range-track {
+ width: 100%;
+ height: 4.4px;
+ cursor: pointer;
+ box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40;
+ background: var(--slider-track-color);
+ border-radius: 1.3px;
+ border: 0.2px solid var(--slider-track-color);;
+}
+input[type=range]::-moz-range-thumb {
+ box-shadow: 1px 1px 1px #00000080, 0px 0px 1px #0d0d0d40;
+ border: 1px solid #00000080;
+ height: 13px;
+ width: 13px;
+ border-radius: 3px;
+ background: var(--slider-thumb-color);
+ cursor: pointer;
+}
+input[type=range]:hover::-moz-range-track {
+ /* background: var(--slider-hover-color);*/
+}
-The spread of anthelmintic resistance {#s4c}
--------------------------------------
+import * as util from "./util.js";
-Population subdivision and non-random mating will influence the outcomes of selection under chemotherapeutic pressure in different ways, depending on the initial frequency of the allele under selection and the ecology of the infection. Before the rate of spread of drug resistant parasites can be predicted reliably and accurately, greater knowledge would be required regarding the number, linkage, dominance, and possible negative pleiotropic effects of putative resistance allele(s), as well as regarding the pharmacodynamic properties of the drugs administered singly and in combination. However, useful biological insights can be obtained from mathematical models that make reasonable assumptions concerning the above [@pntd.0000211-Schwab2],[@pntd.0000211-Schwab3].
+class PageOverlay {
+ constructor() {
+ this.keyboardDisabled = false;
+ document.addEventListener("keydown", (e) => {
+ if (this.keyboardDisabled) e.preventDefault();
+ });
-If the resistance allele is recessive and it has a low initial frequency, inbreeding will increase parasite homozygosity and as a result, the spread of drug resistant worms across the parasite population (see [Figure 6](#pntd-0000211-g006){ref-type="fig"} and [@pntd.0000211-Schwab2]). If drug resistance is a semi-dominant trait then parasite inbreeding will either increase or decrease the spread of drug resistance, depending on the efficacy of the drug against heterozygote parasites. Parasite genetic differentiation between hosts will also increase the spread of resistance even when the resistance allele is initially present at a very low frequency, as it increases the probability that male and female resistant worms will inhabit the same infrapopulation. This work is consistent with mathematical models of veterinary helminths which indicate that spatial heterogeneity and aggregated infections between hosts increase the spread of rare recessive genes [@pntd.0000211-Cornell1],[@pntd.0000211-Smith1].
+ this.overlayElement = util.newDiv(null, "page-overlay");
+ document.body.appendChild(this.overlayElement);
-The detection of anthelmintic resistance {#s4d}
-----------------------------------------
+ this.items = new Map();
+ }
-The operation of a strong degree of parasite genetic differentiation between hosts reduces the prevalence of infection with drug resistant parasites and would therefore increase the number of hosts and parasites that should be sampled to detect and quantify the frequency of resistance-conferring alleles reliably. Even at high resistance allele frequencies, some hosts will have no phenotypic signs of resistance, particularly if the resistance allele is recessive, and therefore hosts respond to treatment. In practice the number of parasites that can be genotyped will be restricted, so surveys should carefully consider the sampling scheme they employ in order to maximise the accuracy of allele frequency estimates. Repeatedly sampling from the same host increases the chance of detecting a resistance mutation if it is present in that infrapopulation. However, sampling transmission stages from as many hosts as possible should be considered the optimum strategy, even in a population with low parasite genetic differentiation between hosts, as it reduces the chance of repeatedly sampling offspring of the same adult worm. Prior to the introduction of chemotherapy, studies investigating the presence and frequency of putative resistance markers through genotyping transmission stages alone should weight the number of samples they take per host by the host\'s infection intensity. However, after the start of chemotherapy the best sampling scheme will depend on the pharmacodynamics of the drug and the nature of the questions under investigation.
+ add(mode, control) {
+ this.items.set(mode, control);
+ this.overlayElement.appendChild(control.element);
+ return control;
+ }
-Parasite elimination {#s4e}
---------------------
+ setMode(mode = null) {
+ if (!mode) {
+ this.keyboardDisabled = false;
+ this.overlayElement.style.display = "none";
+ this.items.forEach((v, k) => { v.setVisible(false); });
+ } else {
+ this.keyboardDisabled = true;
+ this.overlayElement.style.display = "flex";
+ this.items.forEach((v, k) => { v.setVisible(mode === k); });
+ }
+ }
+}
-For human helminth infections, the importance of parasite genetic differentiation between hosts stretches beyond population genetics and will influence the outcomes of parasite elimination campaigns such as the GPELF. The ability of a parasite species to persist in a host population following prolonged MDA will depend in part on the metapopulation dynamics of helminth transmission, the patterns of host compliance with treatment regimes and the pharmacodynamic properties of the drugs used. The aggregated nature of the passage of transmission stages between hosts will make parasite elimination harder to achieve by lowering the breakpoint density (the unstable equilibrium below which the parasite population will tend naturally to local extinction [@pntd.0000211-Macdonald1]), as overdispersion of parasites will result in fewer hosts with a single-sexed infection.
+class Overlay {
+ constructor() {
+ this.element = util.newDiv(null, "overlay");
+ }
-The authors have declared that no competing interests exist.
+ setVisible(visible) {
+ this.element.style.display = visible ? "flex" : "none";
+ }
+}
-TSC and M-GB would like to thank the Medical Research Council, United Kingdom, for financial support. AES and RKP thank GlaxoSmithKline, FQRNT, and the Centre for Host Parasite Interactions, Québec, for financial support. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.
+class BusyOverlay extends Overlay {
+ constructor() {
+ super();
+ this.element.innerHTML = "" +
+ "";
+ }
+}
-[^1]: Analyzed the data: TC. Contributed reagents/materials/analysis tools: AS RP. Wrote the paper: TC MB.
+class LoadingOverlay extends Overlay {
+ constructor() {
+ super();
+ this.element.innerHTML = "";
-
-
-
-
-
-
-
-
-Natural killer cell cytotoxicity and alpha-interferon in early rheumatoid arthritis.
-Natural killer (NK) cell number, cytotoxicity, and serum alpha-interferon (alpha-IFN) was measured in a group of early synovitis patients and compared to that of established rheumatoid arthritis patients and normal controls. No significant differences in NK cell number or serum alpha-IFN were found. NK cell cytotoxicity (NKCC) in the early synovitis group was significantly (p < 0.05) reduced compared to that of the normal controls and not significantly different from the established rheumatoid controls. There was a trend for those early synovitis patients with a good outcome to have higher NKCC. Low NKCC is evident very early in the course of rheumatoid arthritis and is thus unlikely to be secondary to chronic inflammation. There is no relationship between NKCC and alpha-IFN levels and the cause of the reduced NKCC is unknown. Alpha-IFN levels are not raised early in the course of RA.
-France Clear Favorite on 2022 World Cup Odds
+ this.box = util.newDiv(null, "progressbar-box");
+ this.element.appendChild(this.box);
-The 2018 FIFA World Cup came to a conclusion on Sunday as France posted a 4-2 victory over Croatia to claim their second World Cup title in 20 years and pay out on +700 pre-tournament World Cup championship odds.
+ this.bar = util.newDiv(null, "progressbar-bar");
+ this.box.appendChild(this.bar);
+ }
-Sunday’s victory as +110 favorites on the World Cup game line odds continues France’s torrid play at recent international tournaments. Les Bleus came within an extra time goal of the Euro 2016 championship, falling to Portugal by a 1-0 score in their only defeat at a major international tournament since the quarter-finals of the 2014 World Cup.
+ setProgress(a, b) {
+ let percentage = 100 * (a / b);
+ this.bar.style.width = percentage + '%';
+ }
+}
-With a youthful lineup led by 19-year-old Kylian Mbappe, who garnered Best Young Player Award honors at this year’s tournament, France’s future looks bright. Fresh off the heels of their victory this weekend, Les Bleus opened as clear +500 favorites to successfully defend their title on the 2022 World Cup odds.
+export var pageOverlay = new PageOverlay();
+export var busyOverlay = pageOverlay.add("busy", new BusyOverlay());
+export var loadingOverlay = pageOverlay.add("loading", new LoadingOverlay());
+
+
+
+@app.route("/api/load_model", methods=['POST'])
+def api_load_model():
+ global api_lock, verbose
+ if verbose: print("/api/load_model")
+ with api_lock:
+ data = request.get_json()
+ if verbose: print("<-", data)
+ if verbose: print("-> ...")
+ result = Response(stream_with_context(load_model(data)), mimetype = 'application/json')
+ if verbose: print("->", result)
+ return result
+
+@app.route("/api/unload_model")
+def api_unload_model():
+ global api_lock, verbose
+ if verbose: print("/api/unload_model")
+ with api_lock:
+ result = unload_model()
+ if verbose: print("->", result)
+ return json.dumps(result) + "\n"
+
+@app.route("/api/list_sessions")
+def api_list_sessions():
+ global api_lock, verbose
+ if verbose: print("/api/list_sessions")
+ with api_lock:
+ s, c = list_sessions()
+ result = { "result": "ok", "sessions": s, "current_session": c }
+ if verbose: print("-> (...)")
+ return json.dumps(result) + "\n"
+
+@app.route("/api/get_default_settings")
+def api_get_default_settings():
+ global api_lock, verbose
+ if verbose: print("/api/get_default_settings")
+ with api_lock:
+ result = { "result": "ok",
+ "session_settings": get_default_session_settings(),
+ "notepad_settings": get_default_notepad_settings(),
+ "prompt_formats": list_prompt_formats() }
+ return json.dumps(result) + "\n"
+
+@app.route("/api/set_session", methods=['POST'])
+def api_set_session():
+ global api_lock, verbose
+ if verbose: print("/api/set_session")
+ with api_lock:
+ data = request.get_json()
+ if verbose: print("<-", data)
+ session = set_session(data)
+ if session is not None:
+ result = { "result": "ok",
+ "session": session,
+ "prompt_formats": list_prompt_formats() }
+ if verbose: print("-> (...)")
+ else:
+ result = { "result": "fail" }
+ if verbose: print("->", result)
+ return json.dumps(result) + "\n"
+
+@app.route("/api/new_session", methods=['POST'])
+def api_new_session():
+ global api_lock, verbose
+ if verbose: print("/api/new_session")
+ with api_lock:
+ data = request.get_json()
+ if verbose: print("<-", data)
+ session = new_session()
+ if "settings" in data: get_session().update_settings(data["settings"])
+ if "user_input_text" in data: get_session().user_input(data)
+ if "new_name" in data: get_session().rename(data)
+ result = { "result": "ok", "session": session }
+ if verbose: print("-> (...)")
+ return json.dumps(result) + "\n"
+
+@app.route("/api/rename_session", methods=['POST'])
+def api_rename_session():
+ global api_lock, verbose
+ if verbose: print("/api/rename_session")
+ with api_lock:
+ data = request.get_json()
+ if verbose: print("<-", data)
+ s = get_session()
+ s.rename(data)
+ result = { "result": "ok" }
+ if verbose: print("->", result)
+ return json.dumps(result) + "\n"
+
+
+
+def is_rocm_installed():
+ # Implement a check for ROCm (e.g., looking for specific files or running a command)
+ # Return True if ROCm is found, False otherwise
+ pass
+
+def is_cuda_installed():
+ # Implement a check for CUDA
+ # Return True if CUDA is found, False otherwise
+ pass
+
+def install_packages():
+ if is_rocm_installed():
+ subprocess.run([sys.executable, '-m', 'pip', 'install', 'some_rocm_package'])
+ elif is_cuda_installed():
+ subprocess.run([sys.executable, '-m', 'pip', 'install', 'some_cuda_package'])
+ else:
+ print("Neither ROCm nor CUDA detected.")
+
+if __name__ == "__main__":
+ install_packages()
+
+
+
+#ifndef _qdq_4_cuh
+#define _qdq_4_cuh
+
+#include "qdq_util.cuh"
+#include "../../config.h"
+
+#if QMODE_4BIT == 1
+
+// Permutation:
+//
+// 77775555 33331111 66664444 22220000
+
+__forceinline__ __device__ void shuffle_4bit_8
+(
+ uint32_t* q,
+ int stride
+)
+{
+ uint32_t qa = q[0];
+ uint32_t qb = 0;
-While Sunday’s loss as +300 underdogs proved to be a massive disappointment for Croatia, the Blazers’ impressive drive to their first-ever berth in a World Cup final has earned them hard-fought status as one of the world’s elite squads. However, Croatia’s heroics at Russia 2018 have done little to boost them on the early 2022 World Cup betting lines, where they lag well behind the favorites as a +5000 wager.
+ #pragma unroll
+ for (int i = 0; i < 4; i++)
+ {
+ uint32_t qa0 = qa & 0x0f;
+ uint32_t qa1 = (qa & 0xf0) >> 4;
+ qa >>= 8;
+ qb |= (qa1 << (i * 4 + 16));
+ qb |= (qa0 << (i * 4));
+ }
+ q[0] = qb;
+}
-A trio of squads coming off disappointing performances at this year’s tournament closely follow Les Bleus on the 2022 World Cup championship odds, with Brazil pegged at +700, ahead of Spain at +750, while 2014 title holders Germany sit at +800.
+__forceinline__ __device__ void dequant_4bit_8
+(
+ const uint32_t q_0,
+ half2 (&dq)[4],
+ int stride
+)
+{
+ const uint32_t c0 = 0x64006400;
+ const half y16_ = __float2half_rn(1.0f / 16.0f);
+ const half2 y16 = __halves2half2(y16_, y16_);
+ const half z1_ = __float2half_rn(-1024.0f - 8.0f);
+ const half z16_ = __float2half_rn(-1024.0f / 16.0f - 8.0f);
+ const half2 z1 = __halves2half2(z1_, z1_);
+ const half2 z16 = __halves2half2(z16_, z16_);
+
+ uint32_t qa = q_0;
+ half2_uint32 q0((qa & 0x000f000f) | c0); // half2(q[ 0], q[ 1]) + 1024
+ half2_uint32 q1((qa & 0x00f000f0) | c0); // half2(q[ 2], q[ 3]) * 16 + 1024
+ qa >>= 8;
+ half2_uint32 q2((qa & 0x000f000f) | c0); // half2(q[ 4], q[ 5]) + 1024
+ half2_uint32 q3((qa & 0x00f000f0) | c0); // half2(q[ 6], q[ 7]) * 16 + 1024
+
+ dq[0] = __hadd2(q0.as_half2, z1);
+ dq[1] = __hfma2(q1.as_half2, y16, z16);
+ dq[2] = __hadd2(q2.as_half2, z1);
+ dq[3] = __hfma2(q3.as_half2, y16, z16);
+}
-The Canarinho traveled to Russia as +400 pre-tournament favorites on the 2018 World Cup odds, and looked poised for a deep knockout stage run after closing out the group stage with a pair of clean-sheet wins. However, Brazil was unable to solve a high-powered Belgium squad in a 2-1 loss that marked their third quarter-final exit in their past four tournament appearances.
+__forceinline__ __device__ void dequant_4bit_8_prep_zero_scale
+(
+ const uint32_t zero,
+ const half scale,
+ half2 (&z1z16)[2],
+ half2 (&y1y16)[2]
+)
+{
+ half_uint16 z1(0xe400 | zero); // half(-1024.0f - zero);
+ half z16 = __hsub(__int2half_rn(-64), __int2half_rn(zero));
-Spain made a second straight early exit at this year’s tournament, falling to Russia on penalties in a Round of 16 match, which marks their only knockout stage appearance since raising the hardware at the 2010 World Cup.
+ half2 scale2 = __half2half2(scale);
-Russia 2018 also proved to be a bitter disappointment for Germany, who closely followed Brazil at +475 on the World Cup futures entering the tournament. However, a shocking 1-0 group stage loss to Mexico as heavy -210 favorites set the tone for Die Mannschaft’s shortest run at a World Cup since 1938.
+ z1z16[0] = __hmul2(scale2, __half2half2(z1.as_half));
+ z1z16[1] = __hmul2(scale2, __half2half2(z16));
-Belgium Trails on 2022 World Cup Betting Lines
+ const half y1 = __float2half_rn(1.0f);
+ const half y16 = __float2half_rn(1.0f / 16.0f);
-Further down the 2022 World Cup odds, Belgium sits at +1100, followed by Argentina at +1200, and Italy at +1800, while England joins the Netherlands at +2000.
+ y1y16[0] = __hmul2(scale2, __half2half2(y1));
+ y1y16[1] = __hmul2(scale2, __half2half2(y16));
+}
-Les Diables Rouges led all squads with 16 goals at Russia 2018, and saw a 25-match unbeaten streak come to an end with a 1-0 loss to France in the semi-finals. Argentina posted just one win in four matches at this year’s tournament, and maintains strong odds despite the uncertain future of superstar Lionel Messi, while Italy and the Netherlands face daunting rebuilding tasks after both European powerhouses failed to qualify for this year’s tournament.
+__forceinline__ __device__ void dequant_4bit_8_prep_zero
+(
+ const uint32_t zero,
+ half2(&z1z16)[2],
+ half2(&y1y16)[2]
+)
+{
+ half_uint16 z1(0xe400 | zero); // half(-1024.0f - zero);
+ half z16 = __hsub(__int2half_rn(-64), __int2half_rn(zero));
-Conversely, England sports a youthful roster, led by top goalscorer Harry Kane, which is likely to make the Three Lions a serious contender at Qatar 2022.
+ z1z16[0] = __half2half2(z1.as_half);
+ z1z16[1] = __half2half2(z16);
-n**(-9/22)
-Simplify ((q/(q*q**11/q*q))/(q**0*q))**(-12) assuming q is positive.
-q**144
-Simplify (s/s**22)/s*s**(-2/11)*s*s assuming s is positive.
-s**(-222/11)
-Simplify (y/(y*(y/(y/(y/(y*y*y**(3/5)))))/y*y))**(-7) assuming y is positive.
-y**(-56/5)
-Simplify o**(-6)*o**13 assuming o is positive.
-o**7
-Simplify q**(-23)*q*q*q**5 assuming q is positive.
-q**(-16)
-Simplify (t/t**(3/10))/(t**(-1)/t)*t*t**(2/3)*t**(-2/17)*t assuming t is positive.
-t**(2677/510)
-Simplify j/j**1*j**(2/15)*(j**(-4)/j)/j*j/(j/(j**(7/5)/j)) assuming j is positive.
-j**(-82/15)
-Simplify d**(-2/13)*d**(-4)*d/(d/(d/d**(-4/5)))*d**(1/5) assuming d is positive.
-d**(-28/13)
-Simplify (((z*z/((z/z**6)/z))/z)/z**(4/3))**(-41) assuming z is positive.
-z**(-697/3)
-Simplify (r**(-1)/r)**(-5/4) assuming r is positive.
-r**(5/2)
-Simplify (j**2/j)**(-33)/(j**(-1/5))**(1/21) assuming j is positive.
-j**(-3464/105)
-Simplify f**(-6)/f*f**(3/2)*(f**1/f)/f**(-5/2) assuming f is positive.
-f**(-3)
-Simplify (v**(2/7)/v)/(v*v**(-2/7)*v)*v**4*(v/(v*v/(v**(-8)*v)))/v assuming v is positive.
-v**(-52/7)
-Simplify ((c/(c*c*c/((c*c**19)/c*c)*c)*c*c)/c)/(((c**(8/9)/c)/c)/c*c) assuming c is positive.
-c**(172/9)
-Simplify (k**(1/3))**(6/17)/(k*k*k/(k*k*k**(2/11)/k*k)*(k*k*k**(3/4))/k) assuming k is positive.
-k**(-1833/748)
-Simplify (q**4*q**(2/11))/((q/q**(1/7))/((q/(q*q**(1/17)*q))/q)) assuming q is positive.
-q**(1657/1309)
-Simplify ((c*c/(c**(3/5)*c))**(-15))**(-15/7) assuming c is positive.
-c**(90/7)
-Simplify (m*m/((m*m**(-3)/m*m)/m))/((m/(m**(1/7)/m)*m)/m)*m*m**9*m/(m/(m*m**(-9))*m)*m assuming m is positive.
-m**(36/7)
-Simplify (v*v/(v/(v*v/(v*v*v**(-2/7)))))**(-13)*(v*v/v**(2/3))**(2/15) assuming v is positive.
-v**(-5209/315)
-Simplify (((o/(o/(o**(1/3)*o*o)))/o*o)**(-1/8))**22 assuming o is positive.
-o**(-77/12)
-Simplify (j*(j**(-5)*j)/j)/j*((j/((j*j**(-1)/j*j*j)/j))/j)/j*((j**(-6)*j*j)/j)/(j*j**(-6)) assuming j is positive.
-j**(-6)
-Simplify w*(w*((w/(w/((w/(w*w/(w*w/w**15)*w*w*w*w*w*w))/w)*w*w))/w*w*w*w)/w)/w*w/w**(1/15) assuming w is positive.
-w**(-301/15)
-Simplify ((i**7/i)/i*i/i**(-5))**40 assuming i is positive.
-i**440
-Simplify (r**0)**33 assuming r is positive.
-1
-Simplify (b**(-17)*b*b**(-10/7))**(5/8) assuming b is positive.
-b**(-305/28)
-Simplify (a**(-2/3)*a)/a**3*(a/(a*a*a**(2/3))*a)/a*a*a/a**(-2/9) assuming a is positive.
-a**(-19/9)
-Simplify (x/x**(-3/2))**48 assuming x is positive.
-x**120
-Simplify ((o*o**(-33/4)*o)/o)/(o**(-48)/o*o) assuming o is positive.
-o**(163/4)
-Simplify (t**(2/9)/(t/(t*(t*t/(t**(-4/5)*t))/t)))**(2/61) assuming t is positive.
-t**(92/2745)
-Simplify x**(1/2)/(x**(-4)/x)*(x/x**(-1))**(-50) assuming x is positive.
-x**(-189/2)
-Simplify l**(-2/31)*l**(-13)/l assuming l is positive.
-l**(-436/31)
-Simplify x**(-2/13)*x**(-20) assuming x is positive.
-x**(-262/13)
-Simplify (h**(28/5))**(-15) assuming h is positive.
-h**(-84)
-Simplify ((w*w*(w*w**(-5/4))/w)/(w*w*w/(w*w/w**(1/13))*w))**(3/17) assuming w is positive.
-w**(-207/884)
-Simplify (x**(2/7))**(1/44) assuming x is positive.
-x**(1/154)
-Simplify a**(-25)*a*a**(3/31) assuming a is positive.
-a**(-741/31)
-Simplify m**(1/3)/m**6*m**3/(m*m*m*m**(-5)/m) assuming m is positive.
-m**(1/3)
-Simplify (((h*h/(h**14*h))/h)/h)/h*h**4 assuming h is positive.
-h**(-12)
-Simplify (x**(-2)*x)**(-1/17)/((((x**(1/3)/x)/x)/x)/x*x*x*x/x**11*x) assuming x is positive.
-x**(547/51)
-Simplify (h**(-2/7)*h/(h/(h*h/(h*h*h**(2/9))*h)))/((h*(h*h/h**6)/h)/h*h**2) assuming h is positive.
-h**(220/63)
-Simplify m**9/m*m/m**(3/20) assuming m is positive.
-m**(177/20)
-Simplify ((q**(-8)*q)/q)**(2/15) assuming q is positive.
-q**(-16/15)
-Simplify (x**(4/9)/x**(2/29))**(2/15) assuming x is positive.
-x**(196/3915)
-Simplify (f**(-1/6))**3/((f/(f**10/f*f))/(f**(4/11)/f)) assuming f is positive.
-f**(173/22)
-Simplify (i*i**(1/2)/i*i)/i*i**(2/11)*i**(1/3)*i**(-6)/i assuming i is positive.
-i**(-395/66)
-Simplify (j/(j*j**(-4))*j**(2/5))/(j**(-4)*j**(1/2)) assuming j is positive.
-j**(79/10)
-Simplify (j/(j*(j/j**(2/13))/j*j))/j**(1/2)*j**(-2/7)*j**1 assuming j is positive.
-j**(-115/182)
-Simplify (k**(-6/5)*k*k*k*k*k*k*k**(2/9)/k*k)**(-3/8) assuming k is positive.
-k**(-113/60)
-Simplify ((h*h**(-3/2)*h)/(h*h/h**(-6)))/(h**(-2/3)/h*h/(h**(-5/4)*h)) assuming h is positive.
-h**(-85/12)
-Simplify y*y*y**(-3/2)*y/y**10*y**(2/7)/y**(-8) assuming y is positive.
-y**(-3/14)
-Simplify (s**(-1/6)/(s/s**(-3/5)))/((s*s**(1/3))/(s/(s**(-3)*s*s))) assuming s is positive.
-s**(-11/10)
-Simplify t/(t/(t*t**(-15/2)))*t/(t**9/t) assuming t is positive.
-t**(-27/2)
-Simplify s*s*s/s**(-8)*s*s/s**(-11)*s assuming s is positive.
-s**25
-Simplify (c*c**(-3))**(7/2)*(c**(2/9))**(1/17) assuming c is positive.
-c**(-1069/153)
-Simplify d**(3/8)*d*d*d**(-2/5) assuming d is positive.
-d**(79/40)
-Simplify (h/h**(-1/11))/h*h*h**(-3/4)*(h**(-2)/h)/(h*h*h**0) assuming h is positive.
-h**(-205/44)
-Simplify (u*u**(8/7)*u)/(u*((u*u**(-3/4))/u)/u*u*u)*(u*u**(-4))/(u/(u*u/(u**(-2/11)/u*u))) assuming u is positive.
-u**(23/308)
-Simplify ((o**(-4/7)*o)/o**0)/((o*o**(-6/11))/(o*o/o**(1/5)*o)) assuming o is positive.
-o**(1068/385)
-Simplify ((c/(c*(c/(c**4*c)*c)/c*c))/(c/c**(-4)))/((c*c**2*c)/(c/c**(-4/5))) assuming c is positive.
-c**(-21/5)
-Simplify a**7*a*((a**(17/4)*a*a)/a*a)/a*a assuming a is positive.
-a**(57/4)
-Simplify ((n*n**5*n*n*n)/n*((n/n**(2/5))/n*n)/n)**(-1/11) assuming n is positive.
-n**(-38/55)
-Simplify (s/(s/s**(3/5)))**3 assuming s is positive.
-s**(9/5)
-Simplify (v*v**(-1/16))/((v**1/v)/v) assuming v is positive.
-v**(31/16)
-Simplify ((d**0)**16)**26 assuming d is positive.
-1
-Simplify i**(-9)*i**(-17) assuming i is positive.
-i**(-26)
-Simplify (((k*k*(k*k**6)/k)/k)/(k**(-3/4)/k))/(k/(k*k**2*k))**(16/3) assuming k is positive.
-k**(99/4)
-Simplify (p**(-4)*p/(p*p**(-4)))**(1/23) assuming p is positive.
-1
-Simplify l**(5/6)/l*l*l**(-7/2) assuming l is positive.
-l**(-8/3)
-Simplify t/(t**15/t)*(t/(t/(t**(2/3)*t)))/t assuming t is positive.
-t**(-37/3)
-Simplify ((b*b**14*b)/b**12)**11 assuming b is positive.
-b**44
-Simplify ((g*g**(2/13))/g)/g**(-6) assuming g is positive.
-g**(80/13)
-Simplify (v/v**(10/7))**(2/87) assuming v is positive.
-v**(-2/203)
-Simplify (t/(t*t**(-4/5)))**(-50) assuming t is positive.
-t**(-40)
-Simplify g**(-2/7)*g**(-2)*(g*g/(g/g**(-1)*g))**(-2/101) assuming g is positive.
-g**(-1602/707)
-Simplify ((v*v**(-1/4))/(v/(v*v/(v**(-1/2)/v)*v)))/(v**(2/7)/v)**(5/7) assuming v is positive.
-v**(933/196)
-Simplify (b**(-3/5)*((b/(b/(b*b**(-1))))/b*b)/b)/(b**(1/3)*b**10/b) assuming b is positive.
-b**(-164/15)
-Simplify (h**(1/14)*h**(-4)*h)**(1/39) assuming h is positive.
-h**(-41/546)
-Simplify (y**(-1))**(-1/18)*(y*y/(y/(y**(-2/5)*y))*y)**(-45) assuming y is positive.
-y**(-2105/18)
-Simplify (z**(-2/11)/z*z)**(-3/23) assuming z is positive.
-z**(6/253)
-Simplify (k*k**(-1))**14*k**(-1)*k**5/k assuming k is positive.
-k**3
-Simplify ((m*m**(-2/7)*m)/m**(-4))/(m*m*m**(-4)/m*m*m*m/m**5*m) assuming m is positive.
-m**(68/7)
-Simplify ((j*j**(-2))/j)**(-2/61)/((j*j/j**1)/j*j)**(-35) assuming j is positive.
-j**(2139/61)
-Simplify (u**(-1/12)*u)**17 assuming u is positive.
-u**(187/12)
-Simplify ((z**(-2/17)*z*z)**(7/3))**(2/5) assuming z is positive.
-z**(448/255)
-Simplify i**(-1/15)*i**10*i assuming i is positive.
-i**(164/15)
-Simplify (w**3/((w/w**(5/3))/w*w))**(-2/109) assuming w is positive.
-w**(-22/327)
-Simplify z**(2/17)/z*z**(7/4) assuming z is positive.
-z**(59/68)
-Simplify ((s*s/(s/(s**(-6/5)/s)*s))/s)/s**(4/5) assuming s is positive.
-s**(-4)
-Simplify i**24*i*i/i**(-6)*i assuming i is positive.
-i**33
-Simplify ((v*v*v/(v*(v*v*v**(-1/9)*v)/v))/(v/v**6*v*v))/(v**(-1/5)/v**3) assuming v is positive.
-v**(284/45)
-Simplify (n/(n*n/(n/(((n*n**(-4))/n)/n)*n))*n**(-2/9))/(n*n*n**4*n*n**(-1/3)) assuming n is positive.
-n**(-8/9)
-Simplify ((l/l**(-1/11))/l)/l**(-24) assuming l is positive.
-l**(265/11)
-Simplify l**3*(l*l**(-8)*l)/l assuming l is positive.
-l**(-4)
-Simplify ((k/k**(-3/2))/k**(12/7))**(2/29) assuming k is positive.
-k**(11/203)
-Simplify (((t*t*t*t*t*t/t**(-1/12))/t)/(t*t**(-2/3)))**28 assuming t is positive.
-t**133
-Simplify (g/(g**(2/23)/g))/(g*g*((g*g*g**(11/4))/g*g)/g*g) assuming g is positive.
-g**(-445/92)
-Simplify (o**(-2)/(o/(o/((o/(o**(-13)*o*o))/o*o))))**(4/7) assuming o is positive.
-o**(-8)
-Simplify a**(5/7)*a/a**(8/9) assuming
-5 Surprisingly Easy Tricks to Make Running a Habit
+ const half y1 = __float2half_rn(1.0f);
+ const half y16 = __float2half_rn(1.0f / 16.0f);
-You were really excited…
+ y1y16[0] = __half2half2(y1);
+ y1y16[1] = __half2half2(y16);
+}
-You had signed up for a 6k run in your neighbourhood. You had also joined the local running club.
-You were really motivated, weren’t you?
-Your willpower was on a sprint and you were geared up to bolt towards the finishing line.
+__forceinline__ __device__ void dequant_4bit_8_gptq
+(
+ const uint32_t q_0,
+ half2 (&dq)[4],
+ half2 (&z1z16)[2],
+ half2 (&y1y16)[2],
+ int stride,
+ bool scaled
+)
+{
+ const uint32_t c0 = 0x64006400;
-But then…
+ uint32_t qa = q_0;
+ half2_uint32 q0((qa & 0x000f000f) | c0); // half2( q[0] + 1024, q[1] + 1024 )
+ half2_uint32 q1((qa & 0x00f000f0) | c0); // half2( q[2] * 16 + 1024, q[3] * 16 + 1024 )
+ qa >>= 8;
+ half2_uint32 q2((qa & 0x000f000f) | c0); // half2( q[4] + 1024, q[5] + 1024 )
+ half2_uint32 q3((qa & 0x00f000f0) | c0); // half2( q[6] * 16 + 1024, q[7] * 16 + 1024 )
-You went for a vacation or a work trip for a week.
-What happened when you got back?
+ if (scaled)
+ {
+ dq[0] = __hfma2(q0.as_half2, y1y16[0], z1z16[0]); // half2( q[0] * s - z * s, q[1] * s - z * s)
+ dq[1] = __hfma2(q1.as_half2, y1y16[1], z1z16[1]); // half2( q[2] * s - z * s, q[3] * s - z * s)
+ dq[2] = __hfma2(q2.as_half2, y1y16[0], z1z16[0]);
+ dq[3] = __hfma2(q3.as_half2, y1y16[1], z1z16[1]);
+ }
+ else
+ {
+ dq[0] = __hadd2(q0.as_half2, z1z16[0]); // half2( q[0] - z, q[1] - z )
+ dq[1] = __hfma2(q1.as_half2, y1y16[1], z1z16[1]); // half2( q[2] - z, q[3] - z )
+ dq[2] = __hadd2(q2.as_half2, z1z16[0]); // half2( q[4] - z, q[5] - z )
+ dq[3] = __hfma2(q3.as_half2, y1y16[1], z1z16[1]); // half2( q[6] - z, q[7] - z )
+ }
+}
-Do you still have that initial momentum?
-Do you feel like giving up, because starting over is such a pain?
-Is it tough to find time?
+#else
-Sticking to a new habit isn’t easy.
+__forceinline__ __device__ void shuffle_4bit_8
+(
+ uint32_t* q,
+ int stride
+)
+{
+}
-I know! I had tried to make running a habit for ages and failed miserably.
+__forceinline__ __device__ void dequant_4bit_8
+(
+ const uint32_t q_0,
+ half2 (&dq)[4],
+ int stride
+)
+{
+ half dqh[8];
+ for (int i = 0; i < 8; i++) dqh[i] = dq_ns(exb(q_0, i * 4, 0x0f), 8);
-Eventually I got tired of failing.
-That’s when I began to read about the science of habit formation. I tried to find smart and simple ways to make habits stick.
+ for (int i = 0; i < 4; i++) dq[i] = __halves2half2(dqh[i * 2], dqh[i * 2 + 1]);
+}
-Today I can lace up my shoes and go for a regular jog every 4-5 days a week and with ease.
+__forceinline__ __device__ void dequant_4bit_8_prep_zero_scale
+(
+ const uint32_t zero,
+ const half scale,
+ half2 (&z1)[2],
+ half2 (&y1)[2]
+)
+{
+ half z = __int2half_rn(-((int)zero));
+ z = __hmul(z, scale);
+ z1[0] = __half2half2(z);
+ y1[0] = __half2half2(scale);
+}
-Check out these 5 surprisingly easy tricks that have helped me make running a habit:
+__forceinline__ __device__ void dequant_4bit_8_prep_zero
+(
+ const uint32_t zero,
+ half2(&z1)[2],
+ half2(&y1)[2]
+)
+{
+ half z = __int2half_rn(-((int)zero));
+ z1[0] = __half2half2(z);
+}
-1. Create a trigger
+__forceinline__ __device__ void dequant_4bit_8_gptq
+(
+ const uint32_t q_0,
+ half2 (&dq)[4],
+ half2 (&z1)[2],
+ half2 (&y1)[2],
+ int stride,
+ bool scaled
+)
+{
+ half2 dqh2[8];
-According to Charles Duhigg, the bestselling author of “The Power of Habit”, Triggers act as conscious or subconscious reminders to perform a behaviour.
+ uint32_t qa = q_0;
+ for (int i = 0; i < 4; i++)
+ {
+ half d0 = __int2half_rn(qa & 0x0f); qa >>= 4;
+ half d1 = __int2half_rn(qa & 0x0f); qa >>= 4;
+ dqh2[i] = __halves2half2(d0, d1);
+ }
-Triggers could be visual reminders. Try keeping your running gear and shoes next to your bed so you see them first thing in the morning.
+ if (scaled)
+ {
+ dq[0] = __hfma2(dqh2[0], y1[0], z1[0]);
+ dq[1] = __hfma2(dqh2[1], y1[0], z1[0]);
+ dq[2] = __hfma2(dqh2[2], y1[0], z1[0]);
+ dq[3] = __hfma2(dqh2[3], y1[0], z1[0]);
+ }
+ else
+ {
+ dq[0] = __hadd2(dqh2[0], z1[0]);
+ dq[1] = __hadd2(dqh2[1], z1[0]);
+ dq[2] = __hadd2(dqh2[2], z1[0]);
+ dq[3] = __hadd2(dqh2[3], z1[0]);
+ }
+}
-Triggers can also be action based. I run in the evenings and my trigger is “right after I drink my evening coffee, I will go running”.
+#endif
-2. Be specific
+#endif
-During the first 4-6 weeks of picking up running as a habit specify a time of day (or night), the exact trail you will go for the run, duration of the run and at what time will you leave for the run.
+import gc
+import torch
+from torch import nn
+import torch.nn.functional as F
+import math
+from exllamav2.ext import exllamav2_ext as ext_c, none_tensor
+from exllamav2.util import list_live_tensors
-The more specific you can make the action, the easier it is to implement it everyday.
-You can use this statement: “I will go running every Monday, Tuesday, Thursday and Friday at my neighbourhood park in the evening at XX pm (write the time here) for 30 minutes”.
+class AdaptiveQuantizer:
-3. Start small
+ norm: float = 3.5
+ max_p: float = 1.0
+ min_p: float = 0.75
+ p_grid: int = 48
-Habit coach Rob Norback strongly advocates the half-and-half rule. If you want to run for 20 minutes every day, cut it into half (10 minutes) then half it again (5 minutes). That’s where you should start.
+ bits: int
+ scale_bits: int
+ scale_range: float = 1.0
-Doesn’t that sound a lot more achievable?
-Even if you can run for 10-15 minutes, stick to a 5 minute routine until it becomes second nature. Only once it’s become a habit should you start running for longer periods.
+ scale: torch.tensor
+ qscale: torch.tensor
+ qscale_max: float
-How does this help?
+ maxq: float
+ scale_maxq: float
+ qzero: float
-You complete your goal in 5 minutes and that brings a sense of accomplishment which is essential to building habits.
+ def __init__(self,
+ bits: int = 4,
+ scale_bits: int = 4):
-You overcome any procrastination or hurdles (you woke up late, have to rush to office, send the kids to school) that you may face, since you have to invest only 5 minutes.
+ self.bits = bits
+ self.scale_bits = scale_bits
+ self.maxq = 2 ** bits - 1
+ self.qzero = (self.maxq + 1) / 2
+ self.scale_maxq = 2 ** scale_bits - 1
-4. Forgive yourself
+ self.scale_maxq = (2 ** self.scale_bits) - 1
-If you miss a day (which you inevitably will) do NOT berate yourself.
-Missing a day is no big deal. But assuming defeat because you missed 1 day or 2 days in a row (or a whole week while vacationing), is a huge mistake.
+ def find_params(self, x):
-Negative thinking will make you give up. If you think you have failed or you are lazy or you are not good at running, it will stop you from taking further action.
+ xmax, _ = torch.max(torch.abs(x), dim = 0)
+ xmax += 1e-12
-5. Get a good night’s sleep
+ base_scale = xmax / (self.maxq / 2)
+ qscale_max_t = torch.max(base_scale) * self.scale_range
-Sleep matters! If you are not getting at least 6.5 hours of shut eye every night you will be tired, with little energy to focus on habit changes.
+ scale_tp = base_scale / qscale_max_t
+ scale_tp = torch.sqrt(scale_tp)
+ scale_tp *= (self.scale_maxq + 1)
+ qscale_t = torch.clamp(torch.round(scale_tp), 1, self.scale_maxq + 1)
+ qscale_tw = qscale_t / (self.scale_maxq + 1)
+ qscale_tw = qscale_tw ** 2
+ qscale_tw *= qscale_max_t
-You might make it to the park when your enthusiasm and motivation for running is high, but the moment things get even slightly difficult, you’ll skip the habit because as a sleep-deprived person you wouldn’t have the willpower to push yourself through a little discomfort.
+ q = torch.zeros((self.p_grid + 1, 128), dtype = torch.float, device = x.device)
+ ext_c.quantize_err(x, q, qscale_tw, self.qzero, self.maxq, self.norm, self.min_p, self.max_p, self.p_grid)
-Why 6.5 and not 7 hours?
-Because, Tony Schwartz, Energy Coach, recommends that half an hour of exercise can actually compensate for half an hour of sleep and give you more energy in the bargain!
+ q = torch.sum(q, dim = 1)
+ best_pi = torch.argmin(q)
+ best_pif = best_pi / self.p_grid
+ best_p = self.max_p * best_pif + self.min_p * (1 - best_pif)
-What habit do you want to pick up?
+ # best_p = 1.0
-Work out at home, follow a diet, wake up early, learn music, maybe a language, study for a certification?
+ self.qscale = qscale_t.to(torch.short)
+ self.scale = qscale_tw * best_p
+ self.qscale_max = qscale_max_t * best_p
-These principles work for any kind of habit formation. Try it!
-Want to know about that one core ingredient for forming any habit? Sign up for our Blog.
-Thursday, May 14, 2009
+class AdaptiveGPTQ:
-Again between two guys a hell of a lot smarter than you. Me and James.
+ percdamp: float = 0.07
-Just a reminder Channelup is in Italics, James in regular font.
+ layer: nn.Linear
+ device: torch.device
-Yo buddy
+ group_size: int
+ bits: list
+ bits_groups: list
+ scale_bits: int
+ hot_bits: int
-Last night's lost was nothing if not interesting. I liked it (thought it could have been an hour and a half) and thought it did a pretty good job setting up next season. Writing about it was insanely hard as I had a lot of trouble gathering my thoughts and putting them in a coherent format. I obviously wanted to avoid just straight summarizing, but there was so much going on. Anyway I thought I would add a couple of more thoughts that didn't make it into my post.
+ columns: int
+ rows: int
+ hessian: torch.tensor
+ total_groups: int
-- I kind of mention this but the good/evil thing is really going to be the main focus of the last season I think. Ben and Mystery Island guy leading the charge to keep the island secret from everyone with others (Richard Alpert maybe? Shadow of the statue group?) fighting for their own end games. That storyline has the potential to be awesome and maddening at the same time.
+ perm: torch.tensor = None
+ invperm: torch.tensor = None
-- The bomb explosion will probably make it so that the Oceanic crew (plus Miles and Juliette) can somehow jump back to the present and back into the fray. One thing I liked about this season with them alternating between different points in time, is that there wasnt too much overlap and confusion with the characters. Basically keeping it so that everyone easnt always running into each other worked for the production of the show. Putting them all back in to the same time, with Alpert and company's increasing role, plus this new faction, could be tough.
+ g_idx: torch.tensor = None
+ scale: torch.tensor = None
+ qscale: torch.tensor = None
+ qscale_max: torch.tensor = None
+ qweight: torch.tensor = None
+ qgroups: torch.tensor = None
+
+ quant: torch.tensor = None
+ weights: torch.tensor = None
+ hessian: torch.tensor = None
+ hessian_inv: torch.tensor = None
+ num_samples: int = 0
+ num_batches: int = 0
+
+
+ def __init__(self,
+ layer: nn.Linear):
+
+ self.layer = layer
+ self.device = layer.weight.device
+
+ self.rows = self.layer.weight.data.shape[1]
+ self.columns = self.layer.weight.data.shape[0]
+
+ self.weights = self.layer.weight.data.T.clone().float().contiguous()
+ self.hessian = None
+ self.num_samples = 0
+ self.num_batches = 0
+
+
+ def drop_buffers(self):
+
+ self.perm = None
+ self.invperm = None
+ self.g_idx = None
+ self.scale = None
+ self.qscale = None
+ self.qscale_max = None
+ self.qweight = None
+ self.qgroups = None
+ self.quant = None
+ self.weights = None
+ self.hessian = None
+ self.hessian_inv = None
-Any other thoughts? I think I have now written 10,000 words on Lost.
+ gc.collect()
+ torch.cuda.empty_cache()
-Interesting idea about the bomb sending the main characters forward in time. Supporting that idea is the fact that they used the exact same screen effect when we are meant to believe the bomb goes off as when we have traveled in time previously.
-So this foil to Jacob doesn't actually resurrect Locke - but turns himself into an image of Locke? So are we meant to believe this guy also turned himself into a vision of Jack's Dad, Walt, etc? Even though it's bizarre, I suppose it's at least a consistent explanation.
+ def configure(self,
+ group_size: dict,
+ bits = None,
+ bits_prop = None,
+ scale_bits: int = 4
+ ):
-I am not sure if I like the idea of the island being this place where two gods are battling for supremacy. I also don't get why Jacob would just let Ben wave that knife around and then kill him(if he is indeed dead) considering he earlier exercised the power to bring a human being back to life when Locke was thrown from the window. And to be honest, I also thought the "Jacob was actually there at all of these huge moments in all of the Losties lives" got extremely old after the first couple. The first one I was like WHOA!!! and then after that it sort of felt like cheap thrills. Jacob sitting on a bench...Locke falls from the window! Can you believe it?! Jacob was there when Locke was thrown out of the window, too! So I guess what I am saying is, I agree that the episode stands up a lot better as an hour and a half instead of 2 hours. This is sort of a shame considering I felt like some of the other huge plot points were sort of rushed.
+ self.group_size = group_size
+ self.scale_bits = scale_bits
+ self.bits = bits
-We need to see Jacob at Sun and Jin's wedding, but all we get for the most pivotal turning point is the episode is Juliet saying "I changed my mind. I saw the way you looked at her," and a weak explanation? Juliet similarly instantly changes her mind in the sub to get them back to the island...I guess she didn't see any suspicious looks by Sawyer in any of the other dozens of times he and Kate interracted since she got back? I just thought this was a very hurried and sloppy way to make sure everyone got back on the island while also letting Jack's plan carry on. It felt like forced drama, which LOST has done a good job avoiding this season. Easier would have just been to not place Sawyer, Juliet, and Kate on the sub...avoid some empty action scenes of their escape, Sawyer and Jack's fight, the "Why'd you stop," "That's why dude," Hurley and Jack moment, and so on.
+ assert isinstance(bits, list)
+ assert isinstance(bits_prop, list)
+ assert sum(bits_prop) == 1
-Why couldn't Juliet have given her "i saw the way you looked at her" speech when Sawyer first suggests going on the sub in the first place? We are still in the same place, but we have room for further development elsewhere. Would it have been so bad if we saw MIles saying to his father, "Now I understand why you did it," and then playing a bigger role in all of this instead of just having this awesome character making snarky comments in the background from time to time? Perhaps another interraction between Jacob and Evil Jacob at some other point in time(like when Oceanic 815 crashes). My overall point is, as I am sure you can tell by now - a few storylines left me wanting more and a few left me wanting decidedly less. I think either trimming it down, or re-organizing it while dropping the fluff would have been a far more impactful finale. I do agree though, that the events that happened set us up well for next season.
+ groups = 0
+ remaining_rows = self.rows
+ self.bits_groups = []
+ for b, p in zip(self.bits, bits_prop):
+ assert p > 0
+ gsz = self.group_size[b]
+ g = math.ceil(min(self.rows * p, remaining_rows) / gsz)
+ groups += g
+ remaining_rows -= g * gsz
+ self.bits_groups.append(g)
-Totally agree about the Jacob appearances. I thought some were cool (Sawyer, Sayid, Locke) and some were stupid (Jin and Sun, Jack). Also they kind of throw you off with Juliet's parents getting divorced and Jacob not showing up. When he doesnt show it kind of makes the whole thing some weird set up for why she leaves Sawyer. To be honest, the whole Sawyer, Kate Juilet thing has annoyed me for a while and I find it very hollow. What I did enjoy about Sawyer though was the genuine anguish (not for losing Juliet), but for losing the life he had in the Dharma Initiative. He was kind of saying, "I finally made a normal life for myself and you (Jack) came along and f-ed it up like you always do." That is where I felt most pity for him as a character.
+ assert remaining_rows <= 0
-Also the scene where they are about to explode the bomb was beyond ridiculous considering an alarm is going off, the Dharma initiative is on to them, Sayid is dying and every sits around to talk about their feelings for ten minutes. No possible way.
+ self.total_groups = groups
-Agree totally about the sub and its uselessness in the overall plot. Just a filler. I doubt Jacob is actually dead and we need to consider that his body is most likely just some kind of vessel to a more supreme being. I don't know if I love these God implications because they complicate things almost more than time travel does. People with God-like powers (Sylar) are just as impossible as those who try and change the future or past.
-The true test of character is not how much we know how to do, but how we behave when we don't know what to do.
+ # if isinstance(bits, list):
+ #
+ # self.bits = bits
+ # g128 = (self.rows + 128 - 1) // 128
+ # self.bits_groups = [max(round(g128 * p), 1) * 128 // self.group_size for p in bits_prop]
+ # e = sum(self.bits_groups) - self.total_groups
+ # self.bits_groups[-1] -= e
+ #
+ # else:
+ #
+ # self.bits = [bits]
+ # self.bits_groups = [self.total_groups]
-Friday, August 28, 2009
-Free from blackness
+ # def num_bits(self, subtract_columns = 0):
+ #
+ # gi = self.g_idx.numel() * 32
+ # qs = self.qscale.numel() * self.scale_bits
+ # qss = self.qscale_max.numel() * 16
+ #
+ # w = 0
+ # tr = self.rows
+ # for g, b in zip(self.bits_groups, self.bits):
+ #
+ # c = self.columns - subtract_columns
+ # r = self.group_size * g
+ # if r > tr: r = tr
+ # tr -= r
+ # w += r * c * b
+ #
+ # return w + gi + qs + qss
-Independence day celebration is just around the corner. It’s been 52 years our beloved country celebrated independence and our country had achieve a lot since then. This time around since the independence fall on Ramadhan time so I bet there will be not many concerts or socialize party organized in KL or anywhere else but then, it’s just my predictions, other races might as well did it.Talking about independence, what has we, as the children of the post independence know about the value of freedom? Freedom means free from any colonization if that what it means from the past but nowadays out culture are so much been conquered by other races, culture. Our country fills with “PATI”. Anywhere we walk we can see many faces and sometimes I wonder, am I the foreigner here?Yeah2 I know the globalization means that you have to accept the windows of the world into your world but then if the newcomers come and made a hell out my country so what it is going to be? It’s ok for them to work here and made a decent earning with living peacefully with the locals but the main problem is the one that cause the social problem. What we saw in newspaper and news are just the tips of the reports and I’m pretty sure there are many more cases of robbery, thief, snatch, rape, murder involving these ‘type’ of people. Mastika (August Edition) had some stories of how the Negro affecting our life here in Malaysia. Sometimes I wonder, how can they come here? With so many of them? And the usual stories that link with Negro are theft, “pukau”, money counterfeit, rape (which was at first called love).i like to gather some info from all of you about the last one. We see and find this thing in KL right? We can see a nice lovely Malay girls walking along MidValley, hold hand with some Black tall guy. I still wonder why on earth that these ladies picked and fall in love with the Negro? I means they are Christian (some might be Muslim), Black( if you want to choose black, it’s better to choose the Indian) and not handsome ( Malays are so hotter than them)? Why and How? And if their love story end with happy ending good for them but the problem is the ending just like in the 999 (tv3 program).The Negro slept with the girl and then he dumped her and to make matter worse, the girl pregnant and the child with the DNA of Negro was born. So who’s to blame here? The Negro of course, but the girls too.What makes Negro or (in the whole) the foreigners better than the locals? I can stand Malays girls couple with Indians or Chinese as long as same Religion (I mean Islam of course), but I can’t stand if Malays or Chinese or Indians couple with foreigner. It’s like the man from our country had extinct that force them to find foreigner. The same usual lame reasons for these girls to find Negro or “Mat Salleh” are romantic, caring, loving and obviously richer. I would say it is bullshit. The story had been always having the same ending.This is also one type of colonization and proofs that we, Malaysians still not fully achieve Independence. We always value the outside goods higher than our own local goods without ever considering the quality first.The value of Independence means nothing if just some people say aloud “Merdeka” each year and put on the flag on the car, house or office. The values of independence should come within the heart of every Malaysian and together we care and cherish this gift for the good of the future.Happy Independence Day!p/s – My car might not have the flag of Malaysian but in my heart, the love of this country, none can compared with. Well, I shall put on the flag afterwards. Hope all of you did the same things. The first is Islam and the second is Malaysia and I do mean “Malay-sia”.
-.versionSelectItem {
- display: grid;
- grid-template-columns: 70px auto 130px;
- .changeLog {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- padding-right: 10px;
- }
+ def add_batch(self, inputs):
+
+ with torch.inference_mode():
+
+ if self.hessian is None:
+ self.hessian = torch.zeros((self.rows, self.rows), device=self.device, dtype=torch.float)
+
+ self.num_batches += 1
+ num_samples = len(inputs)
+ inputs = torch.cat(inputs, dim = 0)
+ inputs = inputs.view((-1, inputs.shape[-1])).float().T.to("cuda:0")
+ inputs *= math.sqrt(2 / num_samples)
+ self.hessian += inputs.matmul(inputs.T)
+
+
+ def prepare(self):
+
+ with torch.inference_mode():
+
+ self.hessian /= self.num_batches
+
+ diagonal = torch.diag(self.hessian)
+
+ # Zero weights that have no impact. Disabling this since it feels a little drastic based on just the calibration
+ # data. It likely never triggers, anyway.
+
+ # dead = diagonal == 0.0
+ # self.hessian[dead, dead] = 1
+ # self.weights[dead, :] = 0
+
+ # Activation order
+
+ self.perm = torch.argsort(diagonal, descending = True)
+ self.weights = self.weights[self.perm, :]
+ hessian = self.hessian[self.perm][:, self.perm]
+ self.hessian = None
+
+ # In case numerical errors have caused some asymmetry in H, assume it's close to symmetrical and force it.
+ # (Doesn't seem to be needed)
+
+ # torch.cuda.empty_cache()
+ # hessian = (hessian + hessian.T) * 0.5
+ # torch.cuda.empty_cache()
+
+ # Damping
+
+ diagonal = torch.diag(hessian)
+ damp = torch.clamp(self.percdamp * torch.mean(diagonal), min = 1e-5)
+
+ # Inverse of H
+
+ attempts = 0
+ while True:
+
+ try:
+
+ d = torch.arange(self.rows, device = self.device)
+ hessian[d, d] += damp
+
+ # Dump condition number and smallest eigenvalue (should be positive)
+
+ # fro_norm_hessian = torch.norm(hessian, p = 'fro')
+ # fro_norm_inv = torch.norm(torch.linalg.inv(hessian), p = 'fro')
+ # cond_number = fro_norm_hessian * fro_norm_inv
+ # print(cond_number)
+
+ # eigenvalues = torch.linalg.eigvalsh(hessian)
+ # is_pd = torch.all(eigenvalues > 0)
+ # print(is_pd)
+ # print(torch.min(eigenvalues))
+
+ hessian_inv = torch.linalg.cholesky(hessian)
+ hessian_inv = torch.cholesky_inverse(hessian_inv)
+
+ # The Cholesky inverse will sometimes fail to compute due to accumulated rounding errors when H
+ # is very large (e.g. 70B MLP down proj) and a lot of calibration data is used (e.g. 100 rows of
+ # 4096 tokens). This won't always throw an exception and sometimes just results in a NaN tensor.
+
+ if torch.any(torch.isnan(hessian_inv)): raise RuntimeError
+
+ # Test inversion
+
+ # test = hessian_inv @ hessian
+ # test.sub_(torch.eye(test.size(0), device = test.device, dtype = test.dtype))
+ # test **= 2
+ # test = test.mean()
+ # print(test)
+
+ hessian_inv = torch.linalg.cholesky(hessian_inv, upper = True)
+ hessian_inv = hessian_inv.contiguous()
+
+ break
+
+ except RuntimeError:
+
+ # If inverting failed, assume there were non-positive eigenvalues, so apply more damping to shift
+ # the eigenvalues in a positive direction.
+
+ print(" !! Warning: Applied additional damping")
+
+ attempts += 1
+ if attempts == 10:
+ raise ValueError("Hessian is not invertible")
+
+ self.hessian_inv = hessian_inv
+ self.hessian = None
+
+ def reuse_h(self, other):
+
+ with torch.inference_mode():
+
+ self.hessian_inv = other.hessian_inv
+ self.hessian = None
+ self.perm = other.perm
+ self.weights = self.weights[self.perm, :]
+
+
+ def quantize(self, keep_qweight = False, apply = False, drop = False):
+
+ with torch.inference_mode():
+
+ if apply:
+ weights = self.weights
+ self.layer.weight.data = torch.zeros((1, 1), dtype = torch.float32, device = weights.device)
+ else:
+ weights = self.weights.clone()
+
+ self.quant = torch.zeros_like(self.weights)
+
+ if keep_qweight:
+ self.qweight = torch.zeros_like(weights, dtype = torch.short)
+
+ # Quantize groups
+
+ scale = []
+ qscale = []
+ qscale_max = []
+ qgroups = []
+
+ error = weights.clone()
+ group_idx = 0
+ group_idx_list = []
+
+ b = 0
+ for bits_idx, bits in enumerate(self.bits):
+ quantizer = AdaptiveQuantizer(bits = bits, scale_bits = self.scale_bits)
+
+ for group in range(self.bits_groups[bits_idx]):
+ a = b
+ b = min(a + self.group_size[bits], self.rows)
+
+ qgroups.append(bits)
+ qgroups.append(0)
+
+ quantizer.find_params(weights[a : b, :])
+ scale.append(quantizer.scale)
+ qscale.append(quantizer.qscale)
+ qscale_max.append(quantizer.qscale_max)
+
+ ext_c.quantize_range(self.quant,
+ quantizer.scale,
+ self.qweight if keep_qweight else none_tensor,
+ quantizer.qzero,
+ quantizer.maxq,
+ self.hessian_inv,
+ weights,
+ error,
+ a,
+ b)
+
+ group_idx_list += [group_idx] * (b - a)
+ group_idx += 1
+
+
+ # Create g_idx to store inverse activation order
+
+ self.g_idx = torch.tensor(group_idx_list, dtype = torch.int32, device = self.device)
+
+ self.invperm = torch.argsort(self.perm)
+ self.g_idx = self.g_idx[self.invperm]
+
+ # Store scales
+
+ self.scale = torch.stack(scale, dim = 0)
+ self.qscale = torch.stack(qscale, dim = 0)
+ self.qscale_max = torch.tensor(qscale_max, dtype = torch.float16, device = self.device)
+ self.qgroups = torch.tensor(qgroups, dtype = torch.short, device = self.device)
+
+ # Apply
+
+ if apply:
+ if drop:
+ weights = None
+ error = None
+ scale = None
+ qscale = None
+ qscale_max = None
+ qgroups = None
+ group_idx_list = None
+ gc.collect()
+ torch.cuda.empty_cache()
+ self.apply_quant()
+
+
+ def quant_error(self):
+
+ with torch.inference_mode():
+
+ q = self.quant[self.invperm, :]
+ diff = torch.abs(q - self.layer.weight.data.T)
+ mat_error_1 = (diff > 0.01).sum().item() / diff.numel()
+ mat_error_5 = (diff > 0.05).sum().item() / diff.numel()
+ mat_error_10 = (diff > 0.10).sum().item() / diff.numel()
+ return mat_error_1, mat_error_5, mat_error_10
+
+
+ def apply_quant(self):
+
+ qc = self.quant.cpu()
+ invperm = self.invperm.cpu()
+ q = qc[invperm, :].T
+ q = q.reshape(self.quant.T.shape)
+ q = q.to(self.quant.device)
+ self.layer.weight.data = q
+
+
+ def apply_temp(self):
+
+ q = self.quant[self.invperm, :].T
+ temp_layer = nn.Linear(self.layer.in_features, self.layer.out_features, False, device = "meta", dtype = torch.float16)
+ temp_layer.weight = nn.Parameter(q.reshape(self.layer.weight.shape).type_as(self.layer.weight.data))
+ return temp_layer
+
+
+ def pack(self, key, qparams):
+
+ assert qparams.scale_bits in [4]
+ # assert self.columns % 32 == 0
+
+ output = {}
+ output[key + ".q_invperm"] = self.invperm.to(torch.int)
+ output[key + ".q_scale_max"] = self.qscale_max
+ output[key + ".q_groups"] = self.qgroups
+
+ columns = self.columns
+ rem_rows = self.rows
+ padding = -columns % 32
+
+ if padding != 0:
+ print(f" !! Note: Padding quantized tensor {key}")
+ qst = F.pad(self.qscale, (0, padding)).contiguous()
+ qwt = F.pad(self.qweight, (0, padding)).contiguous()
+ else:
+ qst = self.qscale
+ qwt = self.qweight
+
+ qst_packed = torch.zeros((qst.shape[0], qst.shape[1] * qparams.scale_bits // 32), dtype = torch.int32, device = self.device)
+ if qparams.scale_bits == 4: ext_c.pack_rows_4(qst, qst_packed)
+ # if qparams.scale_bits == 6: ext_c.pack_rows_6(qst, qst_packed) # TODO:
+ output[key + ".q_scale"] = qst_packed
+
+ qwt_packed = []
+
+ i = 0
+ row = 0
+ out_row = 0
+ while i < self.qscale.shape[0]:
+
+ bits = self.qgroups[i * 2].item()
+ self.qgroups[i * 2 + 1] = out_row
+ i += 1
+
+ rows = min(self.group_size[bits], rem_rows)
+ wpqr = 32 / bits
+ qrows = rows / wpqr
+ assert i == self.qgroups.shape[-1] or qrows == int(qrows)
+ qrows = math.ceil(qrows)
+
+ g_qwt = qwt[row:row+rows, :].contiguous()
+ g_qwt_packed = torch.zeros((qrows, columns + padding), dtype = torch.int32, device = self.device)
+
+ if padding > 0: g_qwt[:, -padding:] = 2 ** (bits - 1)
+
+ ext_c.pack_columns(g_qwt, g_qwt_packed, bits)
+ qwt_packed.append(g_qwt_packed)
+
+ # print(row, rows, bits)
+
+ row += rows
+ out_row += qrows
+ rem_rows -= rows
+
+
+ qwt_packed = torch.cat(qwt_packed, dim = 0)
+ output[key + ".q_weight"] = qwt_packed
+
+ return output
+
+
+This page shows examples of messages formatted using JSON (JavaScript Object Notation).
+
+{
+ "glossary": {
+ "title": "example glossary",
+ "GlossDiv": {
+ "title": "S",
+ "GlossList": {
+ "GlossEntry": {
+ "ID": "SGML",
+ "SortAs": "SGML",
+ "GlossTerm": "Standard Generalized Markup Language",
+ "Acronym": "SGML",
+ "Abbrev": "ISO 8879:1986",
+ "GlossDef": {
+ "para": "A meta-markup language, used to create markup languages such as DocBook.",
+ "GlossSeeAlso": ["GML", "XML"]
+ },
+ "GlossSee": "markup"
+ }
+ }
+ }
+ }
+}
+
+The same text expressed as XML:
+
+
+ example glossary
+ S
+
+
+ Standard Generalized Markup Language
+ SGML
+ ISO 8879:1986
+
+ A meta-markup language, used to create markup
+languages such as DocBook.
+
+
+
+
+
+
+
+
+
+{"menu": {
+ "id": "file",
+ "value": "File",
+ "popup": {
+ "menuitem": [
+ {"value": "New", "onclick": "CreateNewDoc()"},
+ {"value": "Open", "onclick": "OpenDoc()"},
+ {"value": "Close", "onclick": "CloseDoc()"}
+ ]
+ }
+}}
+
+The same text expressed as XML:
+
+
+
+{"widget": {
+ "debug": "on",
+ "window": {
+ "title": "Sample Konfabulator Widget",
+ "name": "main_window",
+ "width": 500,
+ "height": 500
+ },
+ "image": {
+ "src": "Images/Sun.png",
+ "name": "sun1",
+ "hOffset": 250,
+ "vOffset": 250,
+ "alignment": "center"
+ },
+ "text": {
+ "data": "Click Here",
+ "size": 36,
+ "style": "bold",
+ "name": "text1",
+ "hOffset": 250,
+ "vOffset": 100,
+ "alignment": "center",
+ "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
+ }
+}}
+
+The same text expressed as XML:
+
+
+ on
+
+ main_window
+ 500
+ 500
+
+
+ 250
+ 250
+ center
+
+
+ text1
+ 250
+ 100
+ center
+
+ sun1.opacity = (sun1.opacity / 100) * 90;
+
+
+
+
+{"web-app": {
+ "servlet": [
+ {
+ "servlet-name": "cofaxCDS",
+ "servlet-class": "org.cofax.cds.CDSServlet",
+ "init-param": {
+ "configGlossary:installationAt": "Philadelphia, PA",
+ "configGlossary:adminEmail": "ksm@pobox.com",
+ "configGlossary:poweredBy": "Cofax",
+ "configGlossary:poweredByIcon": "/images/cofax.gif",
+ "configGlossary:staticPath": "/content/static",
+ "templateProcessorClass": "org.cofax.WysiwygTemplate",
+ "templateLoaderClass": "org.cofax.FilesTemplateLoader",
+ "templatePath": "templates",
+ "templateOverridePath": "",
+ "defaultListTemplate": "listTemplate.htm",
+ "defaultFileTemplate": "articleTemplate.htm",
+ "useJSP": false,
+ "jspListTemplate": "listTemplate.jsp",
+ "jspFileTemplate": "articleTemplate.jsp",
+ "cachePackageTagsTrack": 200,
+ "cachePackageTagsStore": 200,
+ "cachePackageTagsRefresh": 60,
+ "cacheTemplatesTrack": 100,
+ "cacheTemplatesStore": 50,
+ "cacheTemplatesRefresh": 15,
+ "cachePagesTrack": 200,
+ "cachePagesStore": 100,
+ "cachePagesRefresh": 10,
+ "cachePagesDirtyRead": 10,
+ "searchEngineListTemplate": "forSearchEnginesList.htm",
+ "searchEngineFileTemplate": "forSearchEngines.htm",
+ "searchEngineRobotsDb": "WEB-INF/robots.db",
+ "useDataStore": true,
+ "dataStoreClass": "org.cofax.SqlDataStore",
+ "redirectionClass": "org.cofax.SqlRedirection",
+ "dataStoreName": "cofax",
+ "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
+ "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
+ "dataStoreUser": "sa",
+ "dataStorePassword": "dataStoreTestQuery",
+ "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
+ "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
+ "dataStoreInitConns": 10,
+ "dataStoreMaxConns": 100,
+ "dataStoreConnUsageLimit": 100,
+ "dataStoreLogLevel": "debug",
+ "maxUrlLength": 500}},
+ {
+ "servlet-name": "cofaxEmail",
+ "servlet-class": "org.cofax.cds.EmailServlet",
+ "init-param": {
+ "mailHost": "mail1",
+ "mailHostOverride": "mail2"}},
+ {
+ "servlet-name": "cofaxAdmin",
+ "servlet-class": "org.cofax.cds.AdminServlet"},
+
+ {
+ "servlet-name": "fileServlet",
+ "servlet-class": "org.cofax.cds.FileServlet"},
+ {
+ "servlet-name": "cofaxTools",
+ "servlet-class": "org.cofax.cms.CofaxToolsServlet",
+ "init-param": {
+ "templatePath": "toolstemplates/",
+ "log": 1,
+ "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
+ "logMaxSize": "",
+ "dataLog": 1,
+ "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
+ "dataLogMaxSize": "",
+ "removePageCache": "/content/admin/remove?cache=pages&id=",
+ "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
+ "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
+ "lookInContext": 1,
+ "adminGroupID": 4,
+ "betaServer": true}}],
+ "servlet-mapping": {
+ "cofaxCDS": "/",
+ "cofaxEmail": "/cofaxutil/aemail/*",
+ "cofaxAdmin": "/admin/*",
+ "fileServlet": "/static/*",
+ "cofaxTools": "/tools/*"},
+
+ "taglib": {
+ "taglib-uri": "cofax.tld",
+ "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}
+
+The same file expressed as XML:
+
+
+
+
+
+
+
+ cofaxCDS
+
+
+ org.cofax.cds.CDSServlet
+
+
+
+ configGlossary:installationAt
+ Philadelphia, PA
+
+
+ configGlossary:adminEmail
+ ksm@pobox.com
+
+
+ configGlossary:poweredBy
+ Cofax
+
+
+ configGlossary:poweredByIcon
+ /images/cofax.gif
+
+
+ configGlossary:staticPath
+ /content/static
+
+
+
+ templateProcessorClass
+ org.cofax.WysiwygTemplate
+
+
+
+ templateLoaderClass
+ org.cofax.FilesTemplateLoader
+
+
+
+ templatePath
+ templates
+
+
+
+ templateOverridePath
+
+
+
+
+ defaultListTemplate
+ listTemplate.htm
+
+
+
+ defaultFileTemplate
+ articleTemplate.htm
+
+
+
+ useJSP
+ false
+
+
+
+ jspListTemplate
+ listTemplate.jsp
+
+
+
+ jspFileTemplate
+ articleTemplate.jsp
+
+
+
+ cachePackageTagsTrack
+ 200
+
+
+
+ cachePackageTagsStore
+ 200
+
+
+
+ cachePackageTagsRefresh
+ 60
+
+
+
+ cacheTemplatesTrack
+ 100
+
+
+
+ cacheTemplatesStore
+ 50
+
+
+
+ cacheTemplatesRefresh
+ 15
+
+
+
+ cachePagesTrack
+ 200
+
+
+
+ cachePagesStore
+ 100
+
+
+
+ cachePagesRefresh
+ 10
+
+
+
+ cachePagesDirtyRead
+ 10
+
+
+
+ searchEngineListTemplate
+ forSearchEnginesList.htm
+
+
+
+ searchEngineFileTemplate
+ forSearchEngines.htm
+
+
+
+ searchEngineRobotsDb
+ WEB-INF/robots.db
+
+
+
+ useDataStore
+ true
+
+
+
+ dataStoreClass
+ org.cofax.SqlDataStore
+
+
+
+ redirectionClass
+ org.cofax.SqlRedirection
+
+
+ dataStoreName
+ cofax
+
+
+
+ dataStoreDriver
+ com.microsoft.jdbc.sqlserver.SQLServerDriver
+
+
+
+ dataStoreUrl
+ jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon
+
+
+
+ dataStoreUser
+ sa
+
+
+
+ dataStorePassword
+
+
+
+
+ dataStoreTestQuery
+ SET NOCOUNT ON;select test='test';
+
+
+
+ dataStoreLogFile
+ /usr/local/tomcat/logs/datastore.log
+
+
+
+ dataStoreInitConns
+ 10
+
+
+
+ dataStoreMaxConns
+ 100
+
+
+
+ dataStoreConnUsageLimit
+ 100
+
+
+ dataStoreLogLevel
+ debug
+
+
+
+ maxUrlLength
+ 500
+
+
+
+
+
+
+ cofaxEmail
+
+
+ org.cofax.cds.EmailServlet
+
+
+
+ mailHost
+ mail1
+
+
+
+ mailHostOverride
+ mail2
+
+
+
+
+
+ cofaxAdmin
+
+
+ org.cofax.cds.AdminServlet
+
+
+
+
+
+ fileServlet
+
+
+ org.cofax.cds.FileServlet
+
+
+
+
+
+ cofaxTools
+
+
+ org.cofax.cms.CofaxToolsServlet
+
+
+
+ templatePath
+ toolstemplates/
+
+
+
+ log
+ 1
+
+
+
+ logLocation
+ /usr/local/tomcat/logs/CofaxTools.log
+
+
+
+ logMaxSize
+
+
+
+
+ dataLog
+ 1
+
+
+
+ dataLogLocation
+ /usr/local/tomcat/logs/dataLog.log
+
+
+
+ dataLogMaxSize
+
+
+
+
+ removePageCache
+ /content/admin/remove?cache=pages&id=
+
+
+
+ removeTemplateCache
+ /content/admin/remove?cache=templates&id=
+
+
+
+ fileTransferFolder
+ /usr/local/tomcat/webapps/content/fileTransferFolder
+
+
+
+ lookInContext
+ 1
+
+
+
+ adminGroupID
+ 4
+
+
+
+ betaServer
+ true
+
+
+
+
+
+
+ cofaxCDS
+
+
+ /
+
+
+
+
+
+ cofaxEmail
+
+
+ /cofaxutil/aemail/*
+
+
+
+
+
+ cofaxAdmin
+
+
+ /admin/*
+
+
+
+
+
+ fileServlet
+
+
+ /static/*
+
+
+
+
+
+ cofaxTools
+
+
+ /tools/*
+
+
+
+
+ cofax.tld
+ /WEB-INF/tlds/cofax.tld
+
+
+
+
+
+The action and label values only need to be provided if they are not the same as the id.
+
+{"menu": {
+ "header": "SVG Viewer",
+ "items": [
+ {"id": "Open"},
+ {"id": "OpenNew", "label": "Open New"},
+ null,
+ {"id": "ZoomIn", "label": "Zoom In"},
+ {"id": "ZoomOut", "label": "Zoom Out"},
+ {"id": "OriginalView", "label": "Original View"},
+ null,
+ {"id": "Quality"},
+ {"id": "Pause"},
+ {"id": "Mute"},
+ null,
+ {"id": "Find", "label": "Find..."},
+ {"id": "FindAgain", "label": "Find Again"},
+ {"id": "Copy"},
+ {"id": "CopyAgain", "label": "Copy Again"},
+ {"id": "CopySVG", "label": "Copy SVG"},
+ {"id": "ViewSVG", "label": "View SVG"},
+ {"id": "ViewSource", "label": "View Source"},
+ {"id": "SaveAs", "label": "Save As"},
+ null,
+ {"id": "Help"},
+ {"id": "About", "label": "About Adobe CVG Viewer..."}
+ ]
+}}
+
+The same message expressed as XML:
+
+
+
+We have discussed qsort() in C. C++ STL provides a similar function sort that sorts a vector or array (items with random access)
+
+It generally takes two parameters, the first one being the point of the array/vector from where the sorting needs to begin and the second parameter being the length up to which we want the array/vector to get sorted. The third parameter is optional and can be used in cases such as if we want to sort the elements lexicographically.
+
+By default, the sort() function sorts the elements in ascending order.
+
+Below is a simple program to show the working of sort().
+
+// C++ program to demonstrate default behaviour of
+// sort() in STL.
+#include
+using namespace std;
+
+int main()
+{
+ int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
+ int n = sizeof(arr) / sizeof(arr[0]);
+
+ /*Here we take two parameters, the beginning of the
+ array and the length n upto which we want the array to
+ be sorted*/
+ sort(arr, arr + n);
+
+ cout << "\nArray after sorting using "
+ "default sort is : \n";
+ for (int i = 0; i < n; ++i)
+ cout << arr[i] << " ";
+
+ return 0;
+}
+Output
+
+Array after sorting using default sort is :
+0 1 2 3 4 5 6 7 8 9
+
+Time Complexity: O(N log N)
+Auxiliary Space: O(1)
+
+How to sort in descending order?
+sort() takes a third parameter that is used to specify the order in which elements are to be sorted. We can pass the “greater()” function to sort in descending order. This function does a comparison in a way that puts greater elements before.
+
+// C++ program to demonstrate descending order sort using
+// greater<>().
+#include
+using namespace std;
+
+int main()
+{
+ int arr[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
+ int n = sizeof(arr) / sizeof(arr[0]);
+
+ sort(arr, arr + n, greater());
+
+ cout << "Array after sorting : \n";
+ for (int i = 0; i < n; ++i)
+ cout << arr[i] << " ";
+
+ return 0;
+}
+Output
+
+Array after sorting :
+9 8 7 6 5 4 3 2 1 0
+
+Time Complexity: O(N log N)
+Auxiliary Space: O(1)
+
+Sort the array only in the given range: To deal with such types of problems we just have to mention the range inside the sort function.
+Below is the implementation of above case:
+
+// C++ program to demonstrate sort()
+
+#include
+using namespace std;
+
+int main()
+{
+ int arr[] = { 0, 1, 5, 8, 9, 6, 7, 3, 4, 2 };
+ int n = sizeof(arr) / sizeof(arr[0]);
+
+ // Sort the elements which lies in the range of 2 to
+ // (n-1)
+ sort(arr + 2, arr + n);
+
+ cout << "Array after sorting : \n";
+ for (int i = 0; i < n; ++i)
+ cout << arr[i] << " ";
+
+ return 0;
+}
+// This code is contributed by Suruchi Kumari
+Output
+
+Array after sorting :
+0 1 2 3 4 5 6 7 8 9
+
+Time Complexity: O(N log N)
+
+Auxiliary Space: O(1)
+
+How to sort in a particular order?
+We can also write our own comparator function and pass it as a third parameter. This “comparator” function returns a value; convertible to bool, which basically tells us whether the passed “first” argument should be placed before the passed “second” argument or not.
+For eg: In the code below, suppose intervals {6,8} and {1,9} are passed as arguments in the “compareInterval” function(comparator function). Now as i1.first (=6) < i2.first (=1), so our function returns “false”, which tells us that “first” argument should not be placed before “second” argument and so sorting will be done in order like {1,9} first and then {6,8} as next.
+
+// A C++ program to demonstrate
+// STL sort() using
+// our own comparator
+#include
+using namespace std;
+
+// An interval has a start
+// time and end time
+struct Interval {
+ int start, end;
+};
+
+// Compares two intervals
+// according to starting times.
+bool compareInterval(Interval i1, Interval i2)
+{
+ return (i1.start < i2.start);
+}
+
+int main()
+{
+ Interval arr[]
+ = { { 6, 8 }, { 1, 9 }, { 2, 4 }, { 4, 7 } };
+ int n = sizeof(arr) / sizeof(arr[0]);
+
+ // sort the intervals in increasing order of
+ // start time
+ sort(arr, arr + n, compareInterval);
+
+ cout << "Intervals sorted by start time : \n";
+ for (int i = 0; i < n; i++)
+ cout << "[" << arr[i].start << "," << arr[i].end
+ << "] ";
+
+ return 0;
+}
+Output
+
+Intervals sorted by start time :
+[1,9] [2,4] [4,7] [6,8]
+
+The time complexity of std::sort() is:
+
+ Best Case – O(N log N)
+ Average Case – O(N log N)
+ Worst-Case – O(N log N)
+
+Space Complexity: It may use O( log N) auxiliary space.
+
+#include
+#include
+using namespace std;
+
+template
+class Comparator { // we pass an object of this class as
+ // third arg to sort function...
+public:
+ bool operator()(T x1, T x2)
+ {
+ return x1 < x2;
+ }
+};
+
+template bool funComparator(T x1, T x2)
+{ // return type is bool
+ return x1 <= x2;
+}
+
+void show(int a[], int array_size)
+{
+ for (int i = 0; i < array_size; i++) {
+ cout << a[i] << " ";
+ }
}
-class SwiftMethod < SwiftEntityElement
-end
+int main()
+{
+ int a[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
+ int asize = sizeof(a) / sizeof(int);
+ cout << "The array before sorting is : ";
+ show(a, asize);
+ cout << endl << "The array after sorting is(asc) :";
+ sort(a, a + asize);
+ show(a, asize);
+ cout << endl << "The array after sorting is(desc) :";
+ sort(a, a + asize, greater());
+ show(a, asize);
+ cout << endl
+ << "The array after sorting is(asc but our "
+ "comparator class) :";
+ sort(a, a + asize, Comparator());
+ show(a, asize);
+ cout << endl
+ << "The array after sorting is(asc but our "
+ "comparator function) :";
+ sort(a, a + asize, funComparator);
+ show(a, asize);
+
+ return 0;
+}
+Output
-Co-Op program helps wounded warriors transition
+The array before sorting is : 1 5 8 9 6 7 3 4 2 0
+The array after sorting is(asc) :0 1 2 3 4 5 6 7 8 9
+The array after sorting is(desc) :9 8 7 6 5 4 3 2 1 0
+The array after sorting is(asc but our comparator class) :0 1 2 3 4 5 6 7 8 9
+The array after sorting is(asc but our comparator function) :0 1 2 3 4 5 6 7 8 9
-Story Highlights
+Time Complexity: O(N log N)
+Auxiliary Space: O(1)
-Former Staff Sgt. Anthony Moralez was placed in a civilian position at White Sands Missile Range thanks to the Wounded Warrior Co-Op Program.
+Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
-Former Staff Sgt. Anthony Moralez was placed in a civilian position at White Sands Missile Range thanks to the Wounded Warrior Co-Op Program.
+The following are different ways to construct or initialize a vector in C++ STL
-WHITE SANDS MISSILE RANGE, N.M., Nov. 5, 2009 - White Sands Missile Range has initiated a Wounded Warrior Co-Op Program to help expedite recruitment efforts while at the same time helping Soldiers transition to civilian life.
+1. Initializing by pushing values one by one:
-Former Staff Sgt. Anthony Moralez was assigned by the battalion to work with CPAC to help develop the program. He was subsequently placed in a civilian position.
+// C++ program to create an empty
+// vector and push values one
+// by one.
+#include
+#include
+using namespace std;
-"This program is something I'm very passionate about," Moralez said. He explained that not too long ago he was sitting in the WTU wondering what life had in store for him. "Quite honestly I was worried!" he said.
+int main()
+{
+ // Create an empty vector
+ vector vect;
-Then last year he met the EEO and CPAC office staff and he said they were extremely passionate about helping the Soldiers "Give back". When he was approached to help with the startup of the program Moralez said he jumped at the opportunity. While developing the concept plan, Moralez said he realized that the program will only work if the individual wants it to work and is willing to give up a few things to gain others.
+ vect.push_back(10);
+ vect.push_back(20);
+ vect.push_back(30);
-"I feel good about the program for two reasons, I helped develop it and it worked for me," Moralez said. "I'm telling you, if you walk through this door many others will open. The trick is to get thru that first one!"
+ for (int x : vect)
+ cout << x << " ";
-Soldiers eligible for this program are those in the battalion who are transitioning out of the Army. Those Soldiers who apply for the program, with an endorsement from the Warrior Transition Battalion commander, can be placed in a federal civilian position at White Sands Missile Range for up to 90 days, pending release from active duty.
+ return 0;
+}
+Output
-Upon successful completion of the trial period and upon honorable release from the military, if approved by the appropriate civilian selecting official, the eligible Soldier may be appointed to the civilian position.
+10 20 30
-"Tony has been an outstanding addition to DPTMS. If you're looking for adaptive, resourceful self-starters with good operational sense, look to the Wounded Warrior Program. I just found out I have two more openings and I plan to bring in two more," said Gerry Veara, White Sands DPTMS.
+2. Specifying size and initializing all values:
-According to Sally Smoot, White Sands CPAC director at the time this article was written, the program is a win-win situation. "Our managers get to fill their jobs quickly, and we get to take care of our Soldiers who have taken care of us."
+// C++ program to create an empty
+// vector and push values one
+// by one.
+#include
+#include
+using namespace std;
-"Under the Equal Employment Opportunity umbrella, the Wounded Warrior Co-Op Program fits well into the objectives of the Disabled Veterans Affirmative Action Program Plan. Those warriors who are a part of the Wounded Warrior Battalion have combat related disabilities they received while serving in the war on terrorism," said Liz Childers, EEO officer.
+int main()
+{
+ int n = 3;
-Childers said it is the goal of the EEO office to ensure that disabled veterans are offered equal employment opportunity in the federal service. "With the collaborated effort of the Civilian Personnel Advisory Center and William Beaumont Army Medical Center, the objective is to recruit and employ those wounded warriors with the required skills needed to fulfill the mission of White Sands Missile Range," she said.
+ // Create a vector of size n with
+ // all values as 10.
+ vector vect(n, 10);
-Applications for this Program are available online at www.wsmr.army.mil/employment.
+ for (int x : vect)
+ cout << x << " ";
-Questions pertaining to this Program may be directed to Carol Main at (575) 678-7728, DSN 258-7728.
-Q:
+ return 0;
+}
+Output
-New column from previous columns in Pandas
+10 10 10
-I have a pandas dataframe with some columns:
->>data.columns.values
-array(['Sheet', 'Row', 'Column', 'Cell', 'V0', 'Thx', 'dV', 'Vd'], dtype=object)
+3. Initializing like arrays:
-Each row contains a different value for the Sheet, Row, etc etc.
-From the info of Sheet, Row, etc I will create a PDF file title like this:
-title = Sheet%s_Row%s_Column%s_Cell%s.pdf
-So instead of iterating over each row of the DataFrame and create a single title each time, I wanted to directly create another column of strings called title and store the different titles like this:
-data['title'] = "Sheet%s_Row%s_Column%s_Cell%s" % (data['Sheet'], data['Row'], data['Column'], data['Cell'])
-But this is not working, seems like it is appending each Serie inside each %s
-How can I create this title column from the info on each row without having to iterate over the entire DataFrame?
+// C++ program to initialize
+// a vector like an array.
+#include
+#include
+using namespace std;
-A:
+int main()
+{
+ vector vect{ 10, 20, 30 };
-One way to do this would be using DataFrame.apply() with axis=1. Example -
-data['title'] = data.apply(lambda row: "Sheet{}_Row{}_Column{}_Cell{}".format(row['Sheet'], row['Row'], row['Column'], row['Cell']) , axis=1)
+ for (int x : vect)
+ cout << x << " ";
-Demo -
-In [52]: df = pd.DataFrame([['A','B'],['C','D'],['E','F']] , columns=['Sheet','row'])
+ return 0;
+}
+Output
-In [53]: df
-Out[53]:
- Sheet row
-0 A B
-1 C D
-2 E F
+10 20 30
-In [54]: df['title'] = df.apply(lambda row: "Sheet{}_row{}".format(row['Sheet'],row['row']) , axis=1)
+4. Initializing from an array:
-In [55]: df
-Out[55]:
- Sheet row title
-0 A B SheetA_rowB
-1 C D SheetC_rowD
-2 E F SheetE_rowF
+// C++ program to initialize
+// a vector from an array.
+#include
+#include
+using namespace std;
+int main()
+{
+ int arr[] = { 10, 20, 30 };
+ int n = sizeof(arr) / sizeof(arr[0]);
-The Joker (1960 film)
+ vector vect(arr, arr + n);
-The Joker () is a 1960 French comedy film directed by Philippe de Broca.
+ for (int x : vect)
+ cout << x << " ";
-Plot
-Edouard Berlon is a young, incorrigible seducer who moves very lightly from one affair to the next. He meets Helene Larouch, a woman married to André, a rich financier who is very busy with his affairs, leaving her in an emotionally arid life. Initially Helene resists Edouard's wooing, but as she gets to know his lively character, his eccentric lifestyle and his very unusual family environment, including his old uncle Théodose, his brother Pilou, servat Olga, some infants, and a few stray dogs, she lets herself become seduced. Their relation, however, turns out to be an ephemeral one as Edouard is busy seducing another woman.
+ return 0;
+}
+Output
-Cast
+10 20 30
- Anouk Aimée as Helene Larouch
- Jean-Pierre Cassel as Edouard Berlon
- Pierre Palau as Théodose
- Geneviève Cluny as Pilou Berlon
- Georges Wilson as Guillaume Berlon
- Anne Tonietti as Olga
- François Maistre as André Laroche
- Jean-Pierre Rambal as Paul
- Liliane Patrick as Solange
- Irène Chabrier as Aline, servant at the inn
+5. Initializing from another vector:
-Release
-The film had its premiere at the Locarno Film Festival in August 1960, but was not released commercially until 20 January 1961 in France and 7 August 1961 in New York. During the 2012 Cannes Film Festival, the film was presented with other classics at the Cinéma de la Plage, a non-competitive part of the official selection that is open to the public. In 12 November 2013, the film was presented at the Cinémathèque québécoise, Montréal.
+// C++ program to initialize a vector from
+// another vector.
+#include
+#include
+using namespace std;
-Critical response
-The film has been described as "a lot of genial fun" as the plot evolves. It also has been described as whimsical and in parts "nutty" for the eccentric lifestyle of the hero and his family. French critics, on the other hand, find subtle qualities in the presentation of the characters as uncle Théodose is described as "an original, old uncle" as well as poetic connotations in the overall work.
+int main()
+{
+ vector vect1{ 10, 20, 30 };
-References
+ vector vect2(vect1.begin(), vect1.end());
-External links
+ for (int x : vect2)
+ cout << x << " ";
-Category:1961 films
-Category:French films
-Category:French-language films
-Category:1960s romantic comedy films
-Q:
+ return 0;
+}
+Output
-C General sscanf return
+10 20 30
-I'm trying to use the return value of sscanf function. The problem is that in the file that I'm reading, some lines may contain different number of integers. How can I tackle this problem?
+6. Initializing all elements with a particular value:
-A:
+// C++ Program to initialize vector using fill()
+#include
+#include
+using namespace std;
-int values[5];
-int values_per_line = sscanf_s(line_buffer, "%d %d %d %d %d", &values[0], &values[1], &values[2], &values[3], &values[4]);
+int main()
+{
+ // creating array with size 10
+ vector vect1(10);
-`
-sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l:
+ // initializing using fill() function
+ int value = 5;
+ fill(vect1.begin(), vect1.end(), value);
-Return Value
-Each of these functions [including s_sscanf()] returns the number of fields that are successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end of the string is reached before the first conversion.
+ // printing vector
+ for (int x : vect1)
+ cout << x << " ";
+ return 0;
+}
+Output
-The Decision Maker
+5 5 5 5 5 5 5 5 5 5
-Credit unions are well aware of the growing revolution in payments. A recent report by McKinsey & Company (Global Payments 2015: A Healthy Industry Confronts Disruption) noted that, the growth of nonbank digital competitors over the next five years will increase downward pressure on transaction margins while increasing growth in electronic payments.
+7. Initialize an array with consecutive numbers using std::iota:
-The drivers for this trend are all too familiar:
+// C++ program to initialize a
+// vector with consecutive
+// numbers
+#include
+#include
+#include
+using namespace std;
-Large technology companies such as Apple, Google, Facebook, Amazon, Microsoft, Tencent and Alibaba, are some of the most significant nonbank competitors. These organizations are cash-rich and have virtually captive customer bases.
+int main()
+{
+ // declaring a vector with size 5
+ vector vec(5);
-Smartphones have become a crucial channel in the world of payments. With these devices comes a swarm of payment options. These range from the likes of Apple Pay to “In-App” purchases that provide an almost seamless user experience.
+ // initializing using iota()
+ iota(vec.begin(), vec.end(), 1);
-Member expectations for technology-enabled experiences have grown considerably. Today’s members, like any other consumers, have experienced an unprecedented level of service via nonbank providers. Some may wonder why their favorite credit union does not have the same level of digital service.
+ // printing the vector
+ for (int i = 0; i < 5; i++) {
+ cout << vec[i] << " ";
+ }
+ return 0;
+}
+Output
-Despite all the hype about the electronics payments, adoption by credit union members may tend to be slower than the public at large. Members tend to be more conservative so fewer are likely to be enthusiastic early adopters.
+1 2 3 4 5
-However, this does not mean credit unions are complacent about this growing trend. The industry, especially its larger players, has begun to respond vigorously with various “digital wallet” strategies. While these efforts are in the formative stages, it is imperative that credit unions position themselves to members as the trusted alternative for safe and secure digital payments. From this positioning, members can be educated and motivated to become loyal users of the credit union’s digital payment platform.
+Time complexity: O(N), where N is the size of the vector.
-A crucial element to make this strategy successful is analytics. Making effective decisions in this fast-paced environment is crucial. The ability to adjust the tactical underpinnings of the strategy on a monthly, weekly, or even daily basis depends on the availability of transactional data for analysis. Having data quickly available at this level of granularity requires a well-designed and well-tuned data warehouse. This tool provides an essential feedback loop for decision makers as they guide the digital payments strategy toward meeting member needs and keeping those payments (and their margins) close to the credit union.
+Auxiliary space: O(N).
-We are missing an opportunity in this space. I would suggest that digital wallets and the associated strategies for a credit union implementation are great and should be pursued. As an industry however, we should own the entire transaction stack from the rails to the transaction. Our mobile transaction rails currently are owned and controlled by companies that are not credit union friendly. Additionally, the advent of blockchain technology will push massive disruption at the current banking infrastructure. Some have predicted the complete demise of banking as it currently exists as a result. Bottom line is the industry is fast approaching the need to innovate or die in my view. With that in mind, there is new pursuit of solutions that address both lines of thinking. Unfortunately, as an industry we remain focused on the wrong things. Instead, we need to think much bigger.
+If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.
-Subscribe to Email Updates
+Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!
-You now have more information at hand about your credit union than ever before. But are you using it to "out-think" your rivals? If not, you may be missing out on a potent competitive tool.
-This blog will:
+How to Hide and Show a Console Window in C++?
+Read
+Discuss
+Courses
+Practice
-Educate subscribers about data integration and Big Data and Analytics.
-Send this page to someone via email
+The task is to hide and Show the console window of a C++ program. The program for the same is given below.
-WARNING: The following story contains descriptions that some readers may find disturbing. Discretion is advised.
+ Note: The results of the following program can only be seen when it is executed on a console.
-Quebec City police say a 39-year-old man has been arrested in connection with what they are describing as an attempted murder of a woman in her 20s.
+Example:
-The incident happened on Friday evening when police were called to Arago Street West at around 9 p.m. after a man set a woman on fire before fleeing the scene.
+// C++ program to hide and show a console window
+#include
+#include
-Paramedics rushed the woman to hospital with life-threatening injuries.
+using namespace std;
-READ MORE: Man seriously injured after setting himself on fire outside south London government office, SIU says
+void countdown()
+{
+ cout << "3" << endl;
+ Sleep(1000);
+ cout << "2" << endl;
+ Sleep(1000);
+ cout << "1" << endl;
+ Sleep(1000);
+ cout << "0" << endl;
+}
-Police say she suffered serious burns to her face, back and hands.
+int main()
+{
+ countdown();
+ HWND window;
+ AllocConsole();
+ // You Can Find HANDLE of other windows too
+ window = FindWindowA("ConsoleWindowClass", NULL);
+ ShowWindow(window, 0);
+
+ countdown();
+ ShowWindow(window, 1);
+}
-“We fear for her life,” police said in a written statement on Saturday.
+Output:
-Story continues below advertisement
-The suspect was arrested Saturday morning at around 11:35 a.m. on Girardin Street in Drummondville, roughly 150 kilometres west of Quebec City.
-Quebec City police spokesperson Etienne Doyon said the suspect was the victim’s ex.
+Explanation: The above program counts from 3 to 1 before the Console Window disappears. After the window has disappeared, the ShowWindow helps the program so that the Console Window reappears again after counting from 3 to 1(executing the countdown function).
-READ MORE: Multiple injuries after vehicle crashes into Quebec City building
+The execution of the program can be understood by understanding the key functions of the program.
-Doyon said a warrant had been issued for his arrest. He was wanted for attempted murder and aggravated assault.
+ #include – The windows.h header in C++ programming languages are specifically designed for windows and contain a very large number of windows specific functions.
+ AllocConsole()- AllocConsole initializes standard input, standard output, and standard error handles for the new console.
+ ShowWindow()- Sets the specified window’s show state.
+ FindWindowA()– Takes string parameters and checks whose class name and window name match the specified strings
-He is being held by provincial police in Drummondville.
+Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!
-Investigators with Quebec City police were en route to interview the suspect.
+Last Updated : 27 Nov, 2022
-Doyon said police had yet to interview the victim herself.
+Prerequisite: Templates in C++
-He confirmed reports that the woman’s mother and children had witnessed the attack.
+Substitution Failure Is Not An Error (SFINAE) is a principle of the C++ programming language that states that a compiler should not fail to compile a program just because it cannot substitute a template parameter. This principle allows for the use of template metaprogramming and enables the compiler to make decisions based on the types of template arguments, which can be useful when dealing with complex code and difficult to reason about logic.
-“The children were placed in the care of the grandmother,” he said, adding that police made sure they were being provided with the necessary support.
+At its core, SFINAE is a way of allowing a compiler to decide which template to use in a given context. The decision is based on the types of template arguments and the compiler will choose the template that is most appropriate for the arguments.
+Advantages of SFINAE:
-Martyn Allard, who says he’s the victim’s neigbour, told Global News he was standing on his second-floor balcony Friday night when he saw someone running by.
+ SFINAE is useful in a variety of scenarios, including writing generic code and dealing with complex logic.
+ SFINAE allows the compiler to decide which template to use, it allows programmers to write code that can be reused in different contexts without needing to explicitly specify the types of template parameters.
+ SFINAE allows for better code reuse, as the same code can be used for different types of objects and parameters.
+ SFINAE also allows for better control over code complexity by allowing the compiler to make decisions based on the types of template parameters, it can reduce the amount of complex logic that needs to be written and understood.
+ SFINAE helps to make code more readable and maintainable, as it is easier to follow the logic of the program.
-“I thought he’d dropped a burning torch on the street,” he said, adding he only realized it was a person when she started running and screaming, “I’m on fire, I’m on fire, someone lit me on fire!”
+In conclusion, SFINAE is a powerful concept in C++ programming that allows for better code reuse, improved code readability, and better control over code complexity. It is a key component of template metaprogramming and is an essential tool for writing robust and efficient code.
-Story continues below advertisement
+Example:
-READ MORE: Evacuation at Quebec City airport terminal lifted, operations return to normal
+// C++ Program to implement
+// Substitution Failure Is Not An Error
+#include
+#include
-Allard said he called 911 and then rushed to the woman’s side to try and help her.
+using namespace std;
-“I was yelling at her ‘Madame get on the ground, madame get on the ground,’ but she was burning up like a torch,” he said.
+// USing template to avoid errors
+template
+void print_type(T t)
+{
+ // For integer
+ if (is_integral::value) {
+ cout << "T is an integral type" << endl;
+ }
-He described a strong smell of gasoline as he approached the victim and said he ripped her burning clothes off as he waited for a neighbour to bring a blanket.
+ // For floating number
+ else if (is_floating_point::value) {
+ cout << "T is a floating point type" << endl;
+ }
-Allard said he grasped the victim’s hands as she appeared wobbly and talked to her to keep her alert.
+ // All other
+ else {
+ cout << "T is not an integral"
+ << "or floating point type" << endl;
+ }
+}
-“She was talking about her kids,” he said.
+// Driver Code
+int main()
+{
+ // T is an integral type
+ print_type(10);
-Story continues below advertisement
+ // T is a floating point type
+ print_type(10.5f);
-— With files from The Canadian Press
-CCSU professors accused of sexual misconduct with students
+ // T is an integral type
+ print_type(true);
-Photo: Journal Register Co. Photo: Journal Register Co. Image 1 of / 3 Caption Close CCSU professors accused of sexual misconduct with students 1 / 3 Back to Gallery
+ // T is an integral type
+ print_type('a');
-Central Connecticut State University President Zulma R. Toro announced Tuesday that she is seeking to fire two longtime theater professors after investigators concluded that each had likely engaged in sexual misconduct with one or more students.
+ // T is not an integral
+ // or floating point type
+ print_type("GFG");
-Toro also announced plans to appoint new leadership for the university’s Office of Diversity & Equity and to reorganize the human resources department after evidence showed that administrators for years failed to take proper action on complaints of sexual misconduct.
+ return 0;
+}
+Output
-The two professors are Joshua Perlstein, hired in 1992, who was placed on paid administrative leave in April, and Thomas Delventhal, who was hired in 1998 and was placed on paid leave last week. Both professors continue to draw their salaries, which are in the $100,000 range.
+T is an integral type
+T is a floating point type
+T is an integral type
+T is an integral type
+T is not an integralor floating point type
-“I am disgusted and disheartened by the new findings indicating two of our professors repeatedly engaged in sexual misconduct and inappropriate behavior with their students,” Toro said in statement. “Also disturbing are the apparent failures by administrators who, over the years, did not protect our students. The findings pinpoint vital changes that are needed to ensure past misbehaviors, mistakes and inaction are not repeated at this university.”
+In this example, the print_type() function is a template function that takes a single argument of type T. Inside the function, there are if statements that use the is_integral and is_floating_point type traits to check the type of T. If T is of the expected type, the corresponding branch of the if statement is executed and the appropriate message is printed. If T is not of the expected type, the else branch is executed and the message “T is not an integral or floating point type” is printed.
-Toro hired the Hartford law firm Shipman & Goodwin LLP nine months ago to conduct the investigation after an article appeared in CCSU’s student newspaper, The Recorder, revealing allegations of sexual misconduct by Perlstein. The same article also detailed a lack of administrative action when complaints were made.
+SFINAE is used in this example because the if statement uses type traits to check the type of T, and if T is not of the expected type, the template substitution will fail. However, because SFINAE is in effect, this failure is not treated as a compile-time error, and the else branch is executed instead.
+Disadvantages of SFINAE
-The investigation, which entailed reviewing thousands of documents, emails, and texts and interviews with dozens of faculty, staff and current and former students, found significant evidence that Perlstein was likely involved in sexual misconduct with several students, including a lengthy, manipulative relationship with one student that continued after her graduation.
+Although SFINAE is very useful it comes with its own limitations, these are :
-It also found that he had a “history of questionable interactions” with female students, was untruthful to investigators and attempted to conceal his problematic conduct because he believed it would put his job in jeopardy.
+ It can be difficult to debug and understand the underlying code, as it relies heavily on the templates and multiple overloads to work correctly.
+ SFINAE is not widely used and can be difficult to find documentation and tutorials for.
+ SFINAE can produce unexpected behavior, as it relies on the compiler to determine which template to use based on the given types. This can lead to unexpected results if the compiler chooses the wrong template.
+ SFINAE can also be slow, as it involves multiple checks in order to determine the correct template. This can lead to a performance hit if used in a critical section of code.
-Following up on students’ complaints about Delventhal, the investigators said that he admitted, over the years, to kissing five students on the neck and/or forehead, was untruthful during his investigatory interview, and denied attempting to engage in any relationship with current or former students.
+There are other methods to perform the same task one of which is enable_if
+Enable_if (Syntax)
-Perlstein said Tuesday he had “no comment at this time,” while Delventhal could not be reached for comment.
+template
+enable_if_t, void> f(T x)
+{
+ // code that only applies to integral tmodule jinvertertb;
+ reg a;
+ wire y;
+
+ //Design Instance
+ jinverter jinv(y,a);
+
+ initial
+ begin
+ $display ("RESULT\ta\ty");
+
+ a = 1; # 100; // Another value
+ if ( y == 0 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 0; # 100; // Initial value is set
+ if ( y == 1 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 1; # 50; // Another value
+ if ( y == 0 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 0; # 100; // Initial value is set
+ if ( y == 1 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ end
+
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+endmoduleypes goes here
+}
-Toro said she is taking the steps required by collective bargaining to dismiss both professors. She said the process involves “a number of faculty panels” and could take as long as a year, but she doesn’t expect the professors would continue to be paid that entire time.
-Besides appointing new leadership for the Office of Diversity & Equity, Toro said she plans to explore a new model for investigating sexual harassment, bullying and misconduct on campus, and to adopt an institution-wide reporting, monitoring and tracking system to collect and disseminate data, as well as taking other steps.
+module jinvertertb;
+ reg a;
+ wire y;
+
+ //Design Instance
+ jinverter jinv(y,a);
+
+ initial
+ begin
+ $display ("RESULT\ta\ty");
+
+ a = 1; # 100; // Another value
+ if ( y == 0 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 0; # 100; // Initial value is set
+ if ( y == 1 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 1; # 50; // Another value
+ if ( y == 0 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ a = 0; # 100; // Initial value is set
+ if ( y == 1 ) // Test for inversion
+ $display (" PASS \t%d\t%d",a,y);
+ else
+ $display (" FAIL \t%d\t%d",a,y);
+
+ end
+
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+endmodule
+
+
+module jFIFOTb;
+ wire [7:0] DATAOUT;
+ wire full, empty;
+ reg clock, reset, wn, rn;
+ reg [7:0] DATAIN;
+
+ jFIFO jfifo(DATAOUT, full, empty, clock, reset, wn, rn, DATAIN);
+
+
+ //enabling the wave dump
+ initial begin
+ $dumpfile("dump.vcd"); $dumpvars;
+ end
+
+ initial
+ begin
+ clock = 0; DATAIN = 8'd0;
+ reset = 1; clock = 1; #5 ; clock = 0; #5;
+ reset = 0;
+
+ $display("Start testing");
+
+ // First write some data into the queue
+ wn = 1; rn = 0;
+ DATAIN = 8'd100;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd150;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd200;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd40;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd70;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd65;
+ clock = 1; #5 ; clock = 0; #5;
+ DATAIN = 8'd15;
+ clock = 1; #5 ; clock = 0; #5;
+
+ // Now start reading and checking the values
+ wn = 0; rn = 1;
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd100 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd150 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd200 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd40 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd70 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd65 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( DATAOUT === 8'd15 )
+ $display("PASS %p ", DATAOUT);
+ else
+ $display("FAIL %p ", DATAOUT);
+
+ clock = 1; #5 ; clock = 0; #5;
+ if ( empty === 1 )
+ $display("PASS %p ", empty);
+ else
+ $display("FAIL %p ", empty);
+ end
+
+endmodule
+
+
+To understand this example, you should have the knowledge of the following Java programming topics:
+
+ Java for Loop
+ Java while and do...while Loop
+
+The factorial of a positive number n is given by:
+
+factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n
+
+Example 1: Find Factorial of a number using for loop
+
+public class Factorial {
+
+ public static void main(String[] args) {
+
+ int num = 10;
+ long factorial = 1;
+ for(int i = 1; i <= num; ++i)
+ {
+ // factorial = factorial * i;
+ factorial *= i;
+ }
+ System.out.printf("Factorial of %d = %d", num, factorial);
+ }
+}
-Toro noted that the most recent chief diversity officer, Rosa Rodriguez, left her post on Friday for “personnel reasons” that Toro said she could not discuss. She did say that Rodriguez would be going to a new position at Capital Community College “for some time.”
+Output
-“To those who bravely shared their stories with out investigators, I am immensely grateful,” Toro said. “This has been a painful process for all of those involved. I am resolved to take the actions necessary to ensure our campus is a safe environment for all and to restore faith and pride in Connecticut’s oldest public institution of higher education.”
+Factorial of 10 = 3628800
-Toro said she realized it may be a “sad day for the survivors, but at the same time I think it’s the beginning of a process that will help them heal and I think that will be positive at the end of the day.”
+In this program, we've used for loop to loop through all numbers between 1 and the given number num (10), and the product of each number till num is stored in a variable factorial.
-Mark Ojakian, president of the Connecticut State Colleges and Universities, said he applauds Toro “for taking prompt and decisive action to make CCSU - and the theatre department in particular - a better, more welcoming learning environment.”
+We've used long instead of int to store large results of factorial. However, it's still not big enough to store the value of bigger numbers (say 100).
-He said the reports identify important steps needed to ensure that “all sexual misconduct complaints are received with the utmost seriousness, thoroughly investigated, and acted upon accordingly. I am beyond confident in the President’s ability to oversee and implement the necessary cultural and policy changes in a thoughtful and transparent manner.”
+For results that cannot be stored in a long variable, we use BigInteger variable declared in java.math library.
+Example 2: Find Factorial of a number using BigInteger
-A troubled theater department
+import java.math.BigInteger;
-The investigators paint a picture of a theater department that is rife with tension and conflict among professors, while also quite informal. Those interviewed said that students and some faculty frequently socialize at parties or other gatherings where alcohol is consumed.
+public class Factorial {
-In addition, those interviewed raised concerns with investigators about the “propriety” of some theater class exercises, such as massage circles.
+ public static void main(String[] args) {
-“It appears as though the informality of the department has led to a climate in which personal space and boundaries are not respected,” the report said.
+ int num = 30;
+ BigInteger factorial = BigInteger.ONE;
+ for(int i = 1; i <= num; ++i)
+ {
+ // factorial = factorial * i;
+ factorial = factorial.multiply(BigInteger.valueOf(i));
+ }
+ System.out.printf("Factorial of %d = %d", num, factorial);
+ }
+}
-Faculty, administrators and students reported that there were ” rumors” about relationships between professors and students for years, which they believe have not been properly addressed, the report said.
+Output
-The report includes concerns that Rodriguez, the most recent chief diversity officer, as well as her predecessors, are “not welcoming or friendly, and in some cases intimidating and/or lacking follow through.”
+Factorial of 30 = 265252859812191058636308480000000
-The investigators said the office is not fulfilling “the crucial function of receiving, investigating and addressing complaints.”
+Here, instead of long, we use BigInteger variable factorial.
-In addition, the investigators found that Human Resources officials failed to interview complainants or witnesses about alleged misconduct involving theater faculty members.
+Since, * cannot be used with BigInteger, we instead use multiply() for the product. Also, num should be casted to BigInteger for multiplication.
-Rodriguez’s office referred questions about the report to the university’s public relations office.
+Likewise, we can also use a while loop to solve this problem.
+Example 3: Find Factorial of a number using while loop
-In at least one case, the report said, a former human resources officer named Anne Alling contacted a relevant potential witness and then later sent the same individual an email indicating that an interview was no longer required, even though the concern still existed and the faculty member remained employed at the university. In two other cases, another former Human Resources officer, Lou Pisano, failed to interview a relevant student witness before making a determination on the matter.
+public class Factorial {
-Had the human resource office conducted further inquiry in those cases, the report said, “the outcome may have been substantially different and more significant prior discipline issued up to and including termination of the professor’s employment.”
+ public static void main(String[] args) {
-The report also said that it is troubling that other high level administrators did not take action to prevent a recurrence. The report says that a former dean and provost, Susan Pease, in setting goals for the theater department in 2014, said that faculty needed to “shape up,” adding that “shape up means: 1) they have to stop sleeping with students 2) they have to stop yelling at students and each other,” and several other goals including putting “on shows that people want to see.”
+ int num = 5, i = 1;
+ long factorial = 1;
+ while(i <= num)
+ {
+ factorial *= i;
+ i++;
+ }
+ System.out.printf("Factorial of %d = %d", num, factorial);
+ }
+}
-“Despite the fact that she was aware of these complaints, she did not effectively address them,” the report said.
+Output
-Pease, who retired last February, said in an email Tuesday that the “goals” were sent “in an informal email to the acting chair of Theater I had recommended for appointment and represented my frustration with the department.”
+Factorial of 5 = 120
-Students described Perlstein as ‘creepy’
+In the above program, unlike a for loop, we have to increment the value of i inside the body of the loop.
-The report says nearly all of the students interviewed used the word “creepy” to describe Perlstein and reported that he routinely conducted warm-up exercises, improvisations and visualizations in class in which he sometimes asked students to imagine themselves naked or act out words representing various sexual activities such as “sex” and “orgasm.”
+Though both programs are technically correct, it is better to use for loop in this case. It's because the number of iteration (upto num) is known.
-Several students said they told investigators that at times they caught Perlstein looking at them during these exercises in ways that made them feel uncomfortable.
+Visit this page to learn to find factorial of a number using recursion.
-Current and former students also told investigators that Perlstein would make comments about their weight, body parts and sexuality. He told one student she was not “sexual enough” to play a certain role. He also told that student, “You walk into a room and your tits are like bam.”
-Some told investigators that Perlstein seemed to deliberately choose plays that included sexual themes or nudity.
-The report tells of two instances in which Perlstein was accused of kissing students. The first was in the 1990s, when the student alleged that Perlstein approached her from behind and tried to kiss her on the lips while she stood outside the Black Box Theater at CCSU.
+Java Program to Check Whether a Number can be Expressed as Sum of Two Prime Numbers
-The student managed to turn her head so the kiss landed on her cheek, according to the report, but Perlstein allegedly whispered to her that she should “not attempt to pull away when [he is] trying to kiss her.”
+To understand this example, you should have the knowledge of the following Java programming topics:
-A few weeks later the student confronted Perlstein and told him that he had made her uncomfortable and he should never attempt to do that again. The student told investigators that Perlstein was most concerned during that exchange about whether she had reported the incident to the university.
+ Java Methods
+ Java for Loop
+ Java if...else Statement
-The report said that during his interview with the investigators, Perlstein denied engaging in the alleged conduct or said it was the result of a “misunderstanding.” In the case involving the student outside the Black Box theater, the report said Perlstein claimed “he was merely trying to congratulate her after she allegedly told him that she was ‘getting married.'”
+Example: Represent a number as Sum of Two Prime Numbers
-The investigators said this is not “credible given the fact that the student was already married when she enrolled in the university a few years earlier.”
+public class Main {
-Perlstein also disputed the account of a student in which he was found by CCSU to have engaged in “inappropriate behavior/sexual harassment.” The student accused him of kissing her, hugging her and touching her buttocks. Perlstein said he had been having an “emotional” not “sexual” conversation with her and kissed her on the cheek, but he denied touching her buttocks.
+ public static void main(String[] args) {
+ int number = 34;
+ boolean flag = false;
+ for (int i = 2; i <= number / 2; ++i) {
-According to Perlstein, the CCSU staff member at the time told him that “if we call it sexual harassment, it will go away.” Perlstein claimed that he was told that otherwise, there was a “high likelihood” that the matter would be pursued with authorities by the student’s “crazy father,” the report said. Perlstein therefore accepted the findings of the CCSU report because he thought it would end the inquiry, according to the Shipman & Goodwin report.
+ // condition for i to be a prime number
+ if (checkPrime(i)) {
-Anna Kelly, who was the student in this incident and is now in her mid-30s living in Hartford, said she is encouraged to know the report will be “a catalyst to move the school forward — that it’s going to bring about actual change and actual consequences for these people who have gone unchecked and unpunished for a long time.”
+ // condition for n-i to be a prime number
+ if (checkPrime(number - i)) {
-In his interview, the report said, Perlstein admitted that he engaged in a consensual relationship with a student he was teaching and advising in 2013, but claimed it was limited to a one or two weeks while he was advising her.
+ // n = primeNumber1 + primeNumber2
+ System.out.printf("%d = %d + %d\n", number, i, number - i);
+ flag = true;
+ }
-But the report said that “substantial electronic communications” between the professor and the student demonstrate that their inappropriate relationship lasted for “an extended period of time” from 2013 until the summer of 2014 when the student graduated, with some breaks along the way.
+ }
+ }
-In August 2013, Perlstein was disciplined by the university for having a relationship with a student he was teaching and advising but the report says it is clear that both before and after that, Perlstein continued to advise, assist and direct activities involving the student.
+ if (!flag)
+ System.out.println(number + " cannot be expressed as the sum of two prime numbers.");
+ }
-Perlstein said the relationship with the student, whether before or after she graduated, was consensual and not coercive, the report said. But the student told the investigators that she did not believe the relationship was “fully consensual on her part.”
+ // Function to check prime number
+ static boolean checkPrime(int num) {
+ boolean isPrime = true;
-Because Perlstein was her adviser for her honors thesis, the student told investigators she believed she needed his assistance to successfully complete her project and graduate.
+ for (int i = 2; i <= num / 2; ++i) {
+ if (num % i == 0) {
+ isPrime = false;
+ break;
+ }
+ }
-“She claims that she felt as though she had no choice but to capitulate to his demands,” the report said.
+ return isPrime;
+ }
+}
-Evidence of their ongoing relationship can be found in multiple texts included in the report including one from early 2014, the report said, in which Perlstein says, “Sorry about attacking your butt … it was aggressive and wrong …have a swell day. Love yoi [sic] ”
+Run Code
-The texts included in the report depict a controlling and manipulative relationship in which Perlstein tried to keep the relationship going while the student tried to break it off, but feared that doing so might harm her academic and theater career.
+Output
-“The extensive communications demonstrate that he engaged in a long-term sexual relationship significantly beyond what any reasonable person would view as appropriate between a professor and student,” the report said. The report said further that the text messages demonstrate that Perlstein was aware his actions were wrong.
+34 = 3 + 31
+34 = 5 + 29
+34 = 11 + 23
+34 = 17 + 17
-Ashley Malloy, who has identified herself as the young woman who had the long relationship with Perlstein and who is now in a graduate school theater program in San Francisco said the reports offers “some relief that the truth is finally coming out but the fact that it’s this long overdue definitely doesn’t take the sting out of what has happened.”
+In the above example, we have created the checkPrime() method to find whether a number is prime or not. The method returns true if the passed number is prime.
-“To just read in no uncertain terms the extent to which the administration was aware of what was going on,” Malloy said, “is so disheartening and destroyed whatever little bit of faith I had left in the institution.”
+Here, we have a number 34. The program tries to check if 34 can be represented as the sum of two prime numbers.
+
+Working of Program
+
+ First, we run a for loop from i = 2 to number / 2.
+ Inside the for loop, we used two if statements. The first statement checks if i is prime or not.
+
+ If true, the second if statement checks if number - i is prime or not. This is because the sum of i and number - i is equal to number.
+ If the second statement is also true, then we can say the number 34 is a valid sum of two prime numbers.
-But she said she does applaud Toro’s actions.
-Delventhal admits kissing at least five students
-During his interview, Delventhal admitted that he probably kissed at least five students on the neck and forehead.
-Delventhal told investigator that this was a way of expressing his endearment for a student and explained that this was the manner in which he was kissed by female members of his family. He said he did not see it as inappropriate or sexual in nature.
+// Java Program to Check if Given Integer is Odd or Even
+// Using Brute Forcew Approach
-However, at least one student told investigator that his kisses made her uncomfortable.
+// Importing required classes
+import java.io.*;
+import java.util.Scanner;
-The investigators found that Delventhal “knew or should have known” that such contact was inappropriate and not in compliance with university policies.”
-Q:
+// Main class
+class GFG {
-Is a virtual function of a template class implicitly instantiated?
+ // Main Driver Method
+ public static void main(String[] args)
+ {
+ // Declaring and initializing integer variable
+ int num = 10;
-Consider the following code. Is it guaranteed that Derived::foo() will be instantiated? foo() is virtual and is called by a non-virtual function of the base class.
-#include
+ // Checking if number is even or odd number
+ // via remainder
+ if (num % 2 == 0) {
-class Base
-{
-public:
- void bar() { foo(); }
-private:
- virtual void foo() = 0;
-};
+ // If remainder is zero then this number is even
+ System.out.println("Entered Number is Even");
+ }
-template class Derived: public Base
-{
-public:
- Derived(T t_) : t(t_) {}
-private:
- void foo() override { std::cout << t; }
- T t;
-};
+ else {
-Derived make_obj()
-{
- return Derived(7);
+ // If remainder is not zero then this number is
+ // odd
+ System.out.println("Entered Number is Odd");
+ }
+ }
}
-A:
-
-Standard section 14.7.1/11 says
-It is unspecified whether or not an implementation implicitly instantiates a virtual member function of a class template if the virtual member function would not otherwise be instantiated.
-However, for a typical vtable implementation, instantiating any constructor of the class requires a vtable for the class to exist, which must contain a pointer to the specialization's virtual function definition. So in practice the virtual function will probably be instantiated.
+// Java Program to find even sum of
+// fibonacci Series Till number N
+import java.io.*;
-Q:
+class geeksforgeeks {
-Show that $S_5$ does not have a quotient group isomorphic to $S_4$
+ // Computing the value of first fibonacci series
+ // and storing the sum of even indexed numbers
+ static int Fib_Even_Sum(int N)
+ {
+ if (N <= 0)
+ return 0;
-Show that $S_5$ does not have a quotient group isomorphic to $S_4$.
+ int fib[] = new int[2 * N + 1];
+ fib[0] = 0;
+ fib[1] = 1;
-If we to assume that $H$ is such a group, than $H$ must be normal in $S_5$ and $|H|=|S_5|/|S_4|=5$. So $H$ must be isomorphic to $\mathbb{Z}/5\Bbb Z$.
-That's as far as my logic goes. I couldn't arrive at a contradiction.
-Any ideas?
+ // Initializing the sum
+ int s = 0;
-A:
+ // Adding remaining numbers
+ for (int j = 2; j <= 2 * N; j++) {
+ fib[j] = fib[j - 1] + fib[j - 2];
-The possible candidates for such an $H$ are the subgroups of $S_5$ that are cyclic of order 5. All elements of $S_5$ of order 5 are given by $5$-cycles. However, the subgroup generated by a 5-cycle is not normal, so no $H$ can exist, as desired.
+ // Only considering even indexes
+ if (j % 2 == 0)
+ s += fib[j];
+ }
-A:
+ return s;
+ }
-The kernel of a surjective homomorphism from $S_5$ to $S_4$ would have order $|S_5|/|S_4|=5.$ This is impossible because: $S_5$ has $1+4!=25$ elements of order $1$ or $5$; the image of each of those $25$ elements must have order $1$ or $5$ in $S_4$; but $S_4$ has no elements of order $5,$ so those $25$ elements must all belong to the kernel of the homomorphism.
+ // The Driver code
+ public static void main(String[] args)
+ {
+ int N = 11;
+ // Prints the sum of even-indexed numbers
+ System.out.println(
+ "Even sum of fibonacci series till number " + N
+ + " is: " + +Fib_Even_Sum(N));
+ }
+}
-Forum of Private Business
-The Forum of Private Business or The Forum (The FPB) is a UK-based membership organisation which campaigns for the interests of small and medium-sized businesses. A member-funded organisation, it offers practical business advice and help, as well as offering a range of products and services to help its members save money. The Forum was established in 1977, is a non-party political organisation and represents over 25,000 UK businesses.
-Background
-The Forum (the FPB) was founded by Stan Mendham in 1977. Previously, Mendham had run an engineering business but was becoming increasingly concerned by the lack of understanding of smaller businesses in the economy and mounting red tape. He studied member-based organisations for smaller businesses in America and Canada, and decided to create a British equivalent.
+ It can be clearly seen that the required sum can be obtained thus:
+ 2 ( F2 + F4 + F6 +………+ F2n ) = (F1 + F2 + F3 + F4 +………+ F2n) – (F1 – F2 + F3 – F4 +………+ F2n)
+ Now the first term can be obtained if we put 2n instead of n in the formula given here.
+ Thus F1 + F2 + F3 + F4 +………+ F2n = F2n+2 – 1.
-The language of a foreign text can often be identified by looking up characters specific to that language.
+ The second term can also be found if we put 2n instead of n in the formula given here
- ABCDEFGHIJKLMNOPQRSTUVWXYZ (Latin alphabet)
- and no other – English, Indonesian, Latin, Malay, Swahili, Zulu
- àäèéëïijöü – Dutch (Except for the ligature ij, these letters are very rare in Dutch. Even fairly long Dutch texts often have no diacritics.)
- áêéèëïíîôóúû Afrikaans
- êôúû – West Frisian
- ÆØÅæøå – Danish, Norwegian
- single diacritics, mostly umlauts
- ÄÖäö – Finnish (BCDFGQWXZÅbcfgqwxzå are found only in names and loanwords, occasionally also ŠšŽž)
- ÅÄÖåäö – Swedish (occasionally é)
- ÄÖÕÜäöõü – Estonian (BCDFGQWXYZcfqwxyz are found only in names and loanwords, occasionally also ŠšŽž)
- ÄÖÜẞäöüß – German
- Circumflexes
- ÇÊÎŞÛçêîşû – Kurdish
- ĂÂÎȘȚăâîșț – Romanian
- ÂÊÎÔÛŴŶÁÉÍÏâêîôûŵŷáéíï – Welsh; (ÓÚẂÝÀÈÌÒÙẀỲÄËÖÜẄŸóúẃýàèìòùẁỳäëöüẅÿ used also but much less commonly)
- ĈĜĤĴŜŬĉ��ĥĵŝŭ – Esperanto
- Three or more types of diacritics
- ÇĞİÖŞÜçğıöşü – Turkish
- ÁÐÉÍÓÚÝÞÆÖáðéíóúýþæö – Icelandic
- ÁÐÍÓÚÝÆØáðíóúýæø – Faroese
- ÁÉÍÓÖŐÚÜŰáéíóöőúüű – Hungarian
- ÀÇÉÈÍÓÒÚÜÏàçéèíóòúüï· – Catalan
- ÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸàâæçéèêëîïôœùûüÿ – French; (Ÿ and ÿ are found only in certain proper names)
- ÁÀÇÉÈÍÓÒÚËÜÏáàçéèíóòúëüï (· only in Gascon dialect) – Occitan
- ÁÉÍÓÚÂÊÔÀãõçáéíóúâêôà (ü Brazilian and k, w and y not in native words) – Portuguese
- ÁÉÍÑÓÚÜáéíñóúü ¡¿ – Spanish
- ÀÉÈÌÒÙàéèìòù – Italian
- ÁÉÍÓÚÝÃẼĨÕŨỸÑG̃áéíóúýãẽĩõũỹñg̃ - Guarani (the only language to use g̃)
- ÁĄĄ́ÉĘĘ́ÍĮĮ́ŁŃ áąą́éęę́íįį́łń (FQRVfqrv not in native words) – Southern Athabaskan languages
- ’ÓǪǪ́ āą̄ēę̄īį̄óōǫǫ́ǭúū – Western Apache
- 'ÓǪǪ́ óǫǫ́ – Navajo
- ’ÚŲŲ́ úųų́ – Chiricahua/Mescalero
- ąłńóż Lechitic languages
- ćęłńóśźż Polish
- ćśůź Silesian
- ãéëòôù Kashubian
- A, Ą, Ã, B, C, D, E, É, Ë, F, G, H, I, J, K, L, Ł, M, N, Ń, O, Ò, Ó, Ô, P, R, S, T, U, Ù, W, Y, Z, Ż – Kashubian
- ČŠŽ
- and no other – Slovene
- ĆĐ – Bosnian, Croatian, Serbian Latin
- ÁĎÉĚÍŇÓŘŤÚŮÝáďéěíňóřťúůý – Czech
- ÁÄĎÉÍĽĹŇÓÔŔŤÚÝáäďéíľĺňóôŕťúý – Slovak
- ĀĒĢĪĶĻŅŌŖŪāēģīķļņōŗū – Latvian; (ŌŖ and ōŗ no longer used in most modern day Latvian)
- ĄĘĖĮŲŪąęėįųū – Lithuanian
- ĐÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬÈẺẼÉẸÊỀỂỄẾỆÌỈĨÍỊÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢÙỦŨÚỤƯỪỬỮỨỰỲỶỸÝỴ đàảãáạăằẳẵắặâầẩẫấậèẻẽéẹêềểễếệìỉĩíịòỏõóọồổỗốơờởỡớợùủũúụưừửữứựỳỷỹýỵ – Vietnamese
- ꞗĕŏŭo᷄ơ᷄u᷄ – Middle Vietnamese
- ā ē ī ō ū – May be seen in some Japanese texts in Rōmaji or transcriptions (see below) or Hawaiian and Māori texts.
- é – Sundanese
- ñ - Basque
- أ ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه ؤ و ئ ى ي ء Arabic script
- Arabic, Malay (Jawi), Kurdish (Soranî), Panjabi / Punjabi, Pashto, Sindhi, Urdu, others.
- پ چ ژ گ – Persian (Farsi)
- Brahmic family of scripts
- Bengali script
- অ আ কা কি কী উ কু ঊ কূ ঋ কৃ এ কে ঐ কৈ ও কো ঔ কৌ ক্ কত্ কং কঃ কঁ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ৰ ল ৱ শ ষ স হ য় ড় ঢ় ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯
- used to write Bengali and Assamese.
- Devanāgarī
- अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ऍ ऎ ए ऐ ऑ ऒ ओ ओ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ० १ २ ३ ४ ५ ६ ७ ८ ९ प् पँ पं पः प़ पऽ
- used to write, either along with other scripts or exclusively, several Indian languages including Sanskrit, Hindi, Maithili, Magahi Marathi, Kashmiri, Sindhi, Bhili, Konkani, Bhojpuri and Nepali from Nepal.
- Gurmukhi
- ਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹ
- primarily used to write Punjabi as well as Braj Bhasha, Khariboli (and other Hindustani dialects), Sanskrit and Sindhi.
- Gujarati script
- અ આ ઇ ઈ ઉ ઊ ઋ ઌ ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ ળ વ શ ષ સ હ ૠ ૡૢૣ
- used to write Gujarati and Kachchi
- Tibetan script
- ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ
- used to write Standard Tibetan, Dzongkha (Bhutanese), and Sikkimese
- АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШ (Cyrillic alphabet)
- ЙЩЬЮЯ
- Ъ – Bulgarian
- ЁЫЭ
- Ў, no Щ, І instead of И (Ґ in some variants) – Belarusian
- rarely Ъ – Russian
- ҐЄІЇ – Ukrainian
- ЉЊЏ, Ј instead of Й (Vuk Karadžić's reform)
- ЃЌЅ – Macedonian
- ЋЂ – Serbian
- ЄꙂꙀЗІЇꙈОуꙊѠЩЪꙐЬѢЮꙖѤѦѨѪѬѮѰѲѴҀ – Old Church Slavonic, Church Slavonic
- Ӂ – Romanian in Transnistria (elsewhere in Latin)
- ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρσςτυφχψω (Greek Alphabet) – Greek
- אבגדהוזחטיכלמנסעפצקרשת (Hebrew alphabet)
- and maybe some odd dots and lines above, below, or inside characters – Hebrew
- פֿ; dots/lines below letters appearing only with א,י, and ו – Yiddish
- no dots or lines around the letters, and more than a few words end with א (i.e., they have it at the leftmost position) – Aramaic
- Ladino
- 漢字文化圈 – Some East Asian Languages
- and no other – Chinese
- with あいうえおの Hiragana and/or アイウエオノ Katakana – Japanese
- 위키백과에 (note commonplace ellipses and circles) Korean
- ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ etc. -- ㄓㄨˋㄧㄣㄈㄨˊㄏㄠˋ (Bopomofo)
- ㄪㄫㄬ -- not Mandarin
- កខគឃងចឆជឈញដឋឌឍណតថទធនបផពភមសហយរលឡអវអ្កអ្ខអ្គអ្ឃអ្ងអ្ចអ្ឆអ្ឈអ្ញអ្ឌអ្ឋអ្ឌអ្ឃអ្ណអ្តអ្ថអ្ទអ្ធអ្នអ្បអ្ផអ្ពអ្ភអ្មអ្សអ្ហអ្យអ្រអ្យអ្លអ្អអ្វ អក្សរខ្មែរ (Khmer alphabet) - Khmer
- Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք Օ Ֆ (Armenian alphabet) – Armenian
- ა ბ გდ ევ ზ ჱ თ ი კ ლ მ ნ ჲ ო პ ჟ რ ს ტ ჳ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჴ ჯ ჰ ჵ ჶ ჷ ჸ (Georgian alphabet) – Georgian
- กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะา฿เแโใไๅๆ๏๐๑๒๓๔๕๖๗๘๙๚๛ (Thai script) - Thai
- AEIOUHKLMNPW' Hawaiian alphabet - Hawaiian
- ⴰⴱⴲⴳⴴⴵⴶⴷⴸⴹⴺⴻⴼⴽⴾⴿⵀⵁⵂⵃⵄⵅⵆⵇⵈⵉⵊⵋⵌⵍⵎⵐⵑⵒⵓⵔⵕⵖⵗⵘⵙⵚⵛⵜⵝⵞⵠⵡⵢⵣⵤⵥⵦⵧ Tifinagh, a script used for Tamazight (Berber)
+ Thus, F1 – F2 + F3 – F4 +………- F2n = 1 + (-1)2n+1F2n-1 = 1 – F2n-1.
-Latin alphabet (possibly extended)
-Romance languages
+ So, 2 ( F2 + F4 + F6 +………+ F2n)
+ = F2n+2 – 1 – 1 + F2n-1
+ = F2n+2 + F2n-1 – 2
+ = F2n + F2n+1 + F2n+1 – F2n – 2
+ = 2 ( F2n+1 -1)
+ Hence, ( F2 + F4 + F6 +………+ F2n) = F2n+1 -1 .
-Lots of Latin roots.
-French (Français)
- Accented letters: â ç è é ê î ô û, rarely ë ï ; ù only in the word où, à only at the ends of a few words (including à). Never á í ì ó ò ú.
- Angle quotation marks: « » (though "curly-Q" quotation marks are also used); dialogue traditionally indicated by means of dashes.
- Common short words: la, le, les, un, une, des, de, du, à, au, et, ou, où, sur, il, elle, ils, se, je, vous, que, qui, y, en, si, ne, est, sont, a, ont.
- Many apostrophised contractions for common pronouns and particles, i.e. words l' or d', less often c', j', m', n', s', t', or rarely z' — only before a word starting by a vowel or, in some cases, an h.
- Common digraphs and trigraphs:
- Vowels digraphs: au, ai, ei, ou. Word-final -ez.
- Vowels digraphs (nasals): an, en, in, on, rarely un. For all of these, the n become m before b, p or m (e.g. embouchure, never *enbouchure).
- Vowel trigraphs: eau, ein, ain, oin.
- Consonant digraphs: ch, gu-. Rarely sh. Semi-consonant -ill-.
- Letters w and k, are rare and used only in loanwords, most often from Germanic languages (e.g whisky).
- Ligatures œ and æ are conventional but are rarely used (a few words are well known, e.g. œil, œuf(s), bœuf(s), most other are scientific/technical and borrowed from Latin).
- Words ending in -aux, -eux, or -oux.
-Spanish (Español)
+// Java Program to find even indexed
+// Fibonacci Sum in O(Log n) time.
- Characters: ¿ ¡ (inverted question and exclamation marks), ñ
- All vowels (á, é, í, ó, ú) may take an acute accent
- The letter u can take a diaeresis (ü), but only after the letter g
- Some words frequently used: de, el, del, los, la(s), uno(s), una(s), y
- No apostrophised contractions
- No use of grave accent
- Letters k and w are rare and only used in loanwords (e.g. walkman)
- Word beginnings: ll- (check not Welsh or Catalan) double L (ll)
- Word endings: -o, -a, -ción, -miento, -dad
- Angle quotation marks: « » (though "curly-Q" quotation marks are also used); dialogue often indicated by means of dashes
+class GFG {
-Italian (Italiano)
+ static int MAX = 1000;
- Almost every native word ends in a vowel. Example exceptions include non, il, per, con, del.
- Common one-letter word: è.
- Common word: perché.
- Letter sequences: gli, gn, sci.
- Letters j, k, w, x and y are rare and used only in loanwords (e.g. whisky).
- Word endings: -o, -a, -zione, -mento, -tà, -aggio.
- Grave accent (e.g., on à) almost always occurs in the last letter of words.
- Double consonants (tt, zz, cc, ss, bb, pp, ll, etc.) are frequent.
+ // Create an array for memoization
+ static int f[] = new int[MAX];
-Catalan (Català)
+ // Returns n'th Fibonacci number
+ // using table f[]
+ static int fib(int n)
+ {
+ // Base cases
+ if (n == 0) {
+ return 0;
+ }
+ if (n == 1 || n == 2) {
+ return (f[n] = 1);
+ }
- Characters: à, è, é, í, ï, ò, ó, ú, ü, ç, ·
- Character combination tz (also common in Basque, however) and l·l
- Syllables and words ending in -aig, -eig, -oig, -uig, -aix, -eix, -oix, -uix
- Letter sequences: tx (also common in Basque, however) and tg
- Letter y is only used in the combination ny and loanwords
- Letters k and w are rare and only used in loanwords (e.g. walkman)
- Word endings: -o, -a, -es, -ció, -tat, -ment
- Word beginning: ll- (also common in Spanish and Welsh, however)
- Common words: això, amb, mateix, tots, que
+ // If fib(n) is already computed
+ if (f[n] == 1) {
+ return f[n];
+ }
-Romanian (Română)
+ int k = (n % 2 == 1) ? (n + 1) / 2 : n / 2;
- Characters: ă â î ș ț
- Common words: și, de, la, a, ai, ale, alor, cu
- Word endings: -a, -ă, -u, -ul, -ului, -ție (or -țiune), -ment, -tate; names ending in -escu
- Double and triple i: copii, copiii
- Note that Romanian is sometimes written online with no diacritics, making it harder to identify. A cedilla is sometimes used on S (ş) and on T (ţ) instead of the correct diacritic, the comma (above).
+ // Applying above formula [Note value n&1 is 1
+ // if n is odd, else 0].
+ f[n] = (n % 2 == 1)
+ ? (fib(k) * fib(k)
+ + fib(k - 1) * fib(k - 1))
+ : (2 * fib(k - 1) + fib(k)) * fib(k);
-Portuguese (Português)
+ return f[n];
+ }
- Characters: ã, õ, â, ê, ô, á, é, í, ó, ú, à, ç
- Common one-letter words: a, à, e, é, o
- Common two-letter words: ao, as, às, da, de, do, em, os, ou, um
- Common three-letter words: aos, com, das, dos, ele, ela, mas, não, por, que, são, uma
- Common endings: -ção, -dade, -ismo, -mente
- Common digraphs: ch, nh, lh; examples: chave, galinha, baralho.
- The letters k, w and y are rare. They are found mostly in loanwords, e.g.: keynesianismo, walkie-talkie, nylon.
- Most singular words end in a vowel, l, m, r, or z.
- Plural words end in -s.
+ // Computes value of even-indexed Fibonacci Sum
+ static int calculateEvenSum(int n)
+ {
+ return (fib(2 * n + 1) - 1);
+ }
-Walloon (Walon)
+ // Driver program to test above function
+ public static void main(String[] args)
+ {
+ // Get n
+ int n = 11;
- Characters: å, é, è, ê, î, ô, û
- Common digraphs and trigraphs: ai, ae, én, -jh-, tch, oe, -nn-, -nnm-, xh, ou
- Common one-letter words: a, å, e, i, t', l', s', k'
- Common two-letter words: al, ås, li, el, vs, ki, si, pô, pa, po, ni, èn, dj'
- Common three-letter words: dji, nén, rén, bén, pol, mel
- Common endings: -aedje, -mint, -xhmint, -ès, -ou, -owe, -yî, -åcion
- Apostrophes are followed by a space (preferably non breaking one), eg: l' ome instead of l'ome.
+ // Find the alternating sum
+ System.out.println(
+ "Even indexed Fibonacci Sum upto " + n
+ + " terms: " + calculateEvenSum(n));
+ }
+}
-Galician (Galego)
+SCREEN 13
+z = 1 / 100
+FOR i = 0 TO 255
+ PALETTE i, INT(i / 4) + INT(i / 4) * 256 + INT(i / 4) * 65536
+NEXT
+DO
+ y = 1
+ dy = 0
+ ox = 0: oy = 1
+ FOR x = 1 TO 430
+ IF y > 0 THEN dy = dy - 1 / 4000
+ IF y < 0 THEN dy = dy + z
+ y = y + dy
+ a = POINT(x, 100 + y * 50)
+ a = a + 1
+ IF a > 255 THEN a = 255
+ PSET (x, 100 + y * 50), a
+ NEXT
+ z = z - 1 / 10000
+LOOP
+
+
+DIM bodyx(70)
+DIM bodyy(70)
+DIM bodyvx(70)
+DIM bodyvy(70)
+DIM obodyx(70)
+DIM obodyy(70)
- Similar to Portuguese; the indefinite article "unha" (fem. plural), the suffix -ción and a heavier usage of the letter "x" usually sign Galician.
- Definite articles o (masc. sing.), os (masc. plural), a (fem. sing.), as (fem. plural)
- Common diagraphs: nh (ningunha)
- The letters j, k, w and y are not in the alphabet, and appear only in loanwords
+RANDOMIZE TIMER
-Germanic languages
-English
+bodies = 30
+FOR i = 1 TO bodies
+ bodyx(i) = 620 * RND + 10
+ bodyy(i) = 400 * RND + 30
+ bodyvx(i) = RND - .5
+ bodyvy(i) = RND - .5
+NEXT
+
+
+SCREEN 12
- words: a, an, and, in, of, on, the, that, to, is, what, I (I is always capital when talking about oneself)
- letter sequences: th, ch, sh, ough, augh, qu
- word endings: -ing, -tion, -ed, -age, -s, -’s, -’ve, -n’t, -’d
- diacritics or accents only in loanwords (piñata)
+PRINT "...."
+WHILE INKEY$ = "": WEND
+CLS
+
+
+
+
+
+DO
+
+' apply gravity
+
+FOR i = 1 TO bodies
+ bodyvy(i) = bodyvy(i) + .001
+NEXT
+
+' adjust distances
+
+FOR i = 1 TO bodies
+ FOR j = 1 TO bodies
+ IF i <> j THEN
+ centx = (bodyx(i) + bodyx(j)) * .5
+ centy = (bodyy(i) + bodyy(j)) * .5
+
+ distx = (bodyx(i) - bodyx(j)) / 2
+ disty = (bodyy(i) - bodyy(j)) / 2
+ distf = SQR(distx * distx + disty * disty)
+
+ mx = distx / distf
+ my = disty / distf
+
+ bodyvx(i) = bodyvx(i) - mx * (distf - 50) / 100
+ bodyvy(i) = bodyvy(i) - my * (distf - 50) / 100
+ END IF
+ NEXT
+NEXT
+
+' collide with ground
+
+FOR i = 1 TO bodies
+ IF bodyy(i) + bodyvy(i) > 440 OR bodyy(i) + bodyvy(i) < 5 THEN
+ bodyvy(i) = -bodyvy(i) * 0!
+ bodyvx(i) = bodyvx(i) * 0!
+ END IF
+ IF bodyx(i) + bodyvx(i) > 625 OR bodyx(i) + bodyvx(i) < 15 THEN
+ bodyvx(i) = -bodyvx(i) * 0!
+ bodyvy(i) = bodyvy(i) * 0!
+ END IF
+NEXT
+
+' move bodies
+
+FOR i = 1 TO bodies
+ obodyx(i) = bodyx(i)
+ obodyy(i) = bodyy(i)
+ bodyx(i) = bodyx(i) + bodyvx(i)
+ bodyy(i) = bodyy(i) + bodyvy(i)
+NEXT
+
+' clear/draw
+
+q = (q + 1) MOD 16
+
+FOR i = 1 TO bodies
+ COLOR 0
+ CIRCLE (obodyx(i), obodyy(i)), 4
+ COLOR 15
+ CIRCLE (bodyx(i), bodyy(i)), 4
+ 'COLOR q
+ 'LINE (bodyx(i), bodyy(i))-(bodyx(i) + bodyvx(i) * 30, bodyy(i) + bodyvy(i) * 30)
+NEXT
+
+COLOR 2
+LINE (obodyx(1), obodyy(1))-(bodyx(1), bodyy(1))
+
+'FOR i = 1 TO bodies - 1
+' FOR j = i + 1 TO bodies
+' COLOR 0
+' LINE (obodyx(i), obodyy(i))-(obodyx(j), obodyy(j))
+' COLOR 2
+' LINE (bodyx(i), bodyy(i))-(bodyx(j), bodyy(j))
+' NEXT
+'NEXT
+
+LOOP
+
+
+
+;---------------------------------------------------------------------------
+; start
+;---------------------------------------------------------------------------
+
+start
+ desc
+ msg "It's a room."
+ objects
+ start/key
+ start/door
+
+start/key
+ id "key"
+ desc
+ msg "It's a key."
+ actions
+ use door
+ ifn start/door.flags.locked
+ msg "The door isn't locked."
+ if start/door.flags.locked
+ msg "The lock on the door goes 'click'."
+ set start/door.flags.locked false
+ examine
+ msg "It is shiny."
+
+start/door
+ id "door"
+ desc
+ msg "You see a door."
+ flags
+ locked true
+ open false
+ actions
+ open
+ if start/door.flags.locked
+ msg "It is locked."
+ ifn start/door.flags.locked
+ msg "The door opens."
+ close
+ ifn start/door.flags.open
+ msg "It is already closed."
+ if start/door.flags.open
+ msg "The door closes."
+ go
+ if start/door.flags.open
+ goto end
+ ifn start/door.flags.open
+ msg "The door is closed."
+ examine
+ msg "It looks just like a door."
+
+;---------------------------------------------------------------------------
+; end
+;---------------------------------------------------------------------------
-Dutch (Nederlands)
+end
+ desc
+ "Congratimafations! Another room."
+ objects
+ start/door
+
+
+
+
+macroScript ExportCamera category:"Cameras" toolTip:"Blech!" Icon:#("Cameras",2)
+(
+ filename = maxFileName
+ flen = findString filename ".max"
+ filename = substring filename 1 (flen-1)
+
+ sname = filename
+
+ filename = maxFilePath + filename + ".piper3d"
+ deletefile filename
+ out_file = createfile filename
+
+
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Piper 3D scene file\n" to:out_file
+ format ";\n" to:out_file
+ format "; Scene: % \n" sname to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_begin\n" sname to:out_file
+ format "\n" to:out_file
+
+ animend = animationRange.end as string
+ animend = substring animend 1 (findString animend "f"-1)
+ format " dc.w % ; no. frames\n" animend to:out_file
+ format " dc.w % ; no. objects\n" objects.count to:out_file
+
+ faces = 0
+ vertices = 0
+ for o in objects do (
+ if classOf o == Editable_Mesh then (
+ faces += o.numfaces
+ vertices += o.numverts
+ )
+ )
+
+ format " dc.w % ; no. vertices\n" vertices to:out_file
+ format " dc.w % ; no. faces\n" faces to:out_file
+ format "\n" to:out_file
+
+ format " dc.w 0 ; current frame\n" to:out_file
+ format "\n" to:out_file
+
+ format " dc.l %_vtx ; begin vertices\n" sname sname to:out_file
+ format " dc.l %_fcs ; begin fæces\n" sname sname to:out_file
+ format " dc.l %_mtx ; begin matrices\n" sname sname to:out_file
+ format " dc.l 0 ; begin vertex normals\n" to:out_file
+ format "\n" to:out_file
+
+ format " dc.w 0 ; init flag\n" to:out_file
+ format "\n" to:out_file
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Vertex groups\n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_vtx\n" sname to:out_file
+ format "\n" to:out_file
+
+ for i=1 to objects.count do (
+ format "; group %: %\n" (i-1) objects[i].name to:out_file
+ format "\n" to:out_file
+
+ if classOf objects[i] == Editable_Mesh then (
+ obimat = (inverse objects[i].transform)
+ themesh = snapshotAsMesh objects[i]
+ format " dc.w % ; no. vertices\n" themesh.numverts to:out_file
+ for j=1 to themesh.numverts do (
+ v = (getVert themesh j) * obimat
+ vxs = formatf v.x 6
+ vys = formatf v.y 6
+ vzs = formatf v.z 6
+ format " dc.s %,%,%\n" vxs vys vzs to:out_file
+ )
+ ) else (
+ format " dc.w 0 ; not a mesh\n" to:out_file
+ )
+
+ format "\n" to:out_file
+ )
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Fæces\n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_fcs\n" sname to:out_file
+ format "\n" to:out_file
+
+ voff = 0
+
+ for i=1 to objects.count do (
+ format "; group %: %\n" (i-1) objects[i].name to:out_file
+ format "\n" to:out_file
+
+ if classOf objects[i] == Editable_Mesh then (
+ themesh = snapshotAsMesh objects[i]
+ for j=1 to themesh.numfaces do (
+ f = getFace themesh j
+ format " dc.w %,%,%\n" (int (f.x-1+voff)) (int (f.y-1+voff)) (int (f.z-1+voff)) to:out_file
+
+ smat = objects[i].material
+ mattype = "0"
+
+ u1 = 0
+ v1 = 0
+ u2 = 0
+ v2 = 0
+ u3 = 0
+ v3 = 0
+
+ if smat == undefined then (
+ matname = "0"
+ ) else (
+ if getNumSubMtls smat == 0 then (
+ mat = smat
+ ) else (
+ matid = getFaceMatID themesh j
+ mat = smat.MaterialList[matid]
+ )
+ matname = (int mat.diffuse.r)*256*256 + (int mat.diffuse.g)*256 + (int mat.diffuse.b)
+ dmap = mat.diffuseMap
+ if dmap != undefined then (
+
+ mattype = "1"
+ matname = dmap.filename
+ fntokens = filterString matname "\\"
+ matname = fntokens[fntokens.count]
+ fntokens = filterString matname "."
+ matname = fntokens[1]
+
+ fntokens = filterString matname "-"
+ matname = ""
+ for k=1 to fntokens.count do (
+ matname = matname + fntokens[k]
+ if k < fntokens.count then matname=matname+"m"
+ )
+ matname = sname + "_" + matname + "+1024+14"
+
+ tverts = getTVFace theMesh j
+ u1 = (int (getTVert theMesh tverts[1] * 65535).x)
+ v1 = 65535 - (int (getTVert theMesh tverts[1] * 65535).y)
+ u2 = (int (getTVert theMesh tverts[2] * 65535).x)
+ v2 = 65536 - (int (getTVert theMesh tverts[2] * 65535).y)
+
+macroScript ExportCamera category:"Cameras" toolTip:"Blech!" Icon:#("Cameras",2)
+(
+ filename = maxFileName
+ flen = findString filename ".max"
+ filename = substring filename 1 (flen-1)
+
+ sname = filename
+
+ filename = maxFilePath + filename + ".piper3d"
+ deletefile filename
+ out_file = createfile filename
+
+
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Piper 3D scene file\n" to:out_file
+ format ";\n" to:out_file
+ format "; Scene: % \n" sname to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_begin\n" sname to:out_file
+ format "\n" to:out_file
+
+ animend = animationRange.end as string
+ animend = substring animend 1 (findString animend "f"-1)
+ format " dc.w % ; no. frames\n" animend to:out_file
+ format " dc.w % ; no. objects\n" objects.count to:out_file
+
+ faces = 0
+ vertices = 0
+ for o in objects do (
+ if classOf o == Editable_Mesh then (
+ faces += o.numfaces
+ vertices += o.numverts
+ )
+ )
+
+ format " dc.w % ; no. vertices\n" vertices to:out_file
+ format " dc.w % ; no. faces\n" faces to:out_file
+ format "\n" to:out_file
+
+ format " dc.w 0 ; current frame\n" to:out_file
+ format "\n" to:out_file
+
+ format " dc.l %_vtx ; begin vertices\n" sname sname to:out_file
+ format " dc.l %_fcs ; begin fæces\n" sname sname to:out_file
+ format " dc.l %_mtx ; begin matrices\n" sname sname to:out_file
+ format " dc.l 0 ; begin vertex normals\n" to:out_file
+ format "\n" to:out_file
+
+ format " dc.w 0 ; init flag\n" to:out_file
+ format "\n" to:out_file
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Vertex groups\n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_vtx\n" sname to:out_file
+ format "\n" to:out_file
+
+ for i=1 to objects.count do (
+ format "; group %: %\n" (i-1) objects[i].name to:out_file
+ format "\n" to:out_file
+
+ if classOf objects[i] == Editable_Mesh then (
+ obimat = (inverse objects[i].transform)
+ themesh = snapshotAsMesh objects[i]
+ format " dc.w % ; no. vertices\n" themesh.numverts to:out_file
+ for j=1 to themesh.numverts do (
+ v = (getVert themesh j) * obimat
+ vxs = formatf v.x 6
+ vys = formatf v.y 6
+ vzs = formatf v.z 6
+ format " dc.s %,%,%\n" vxs vys vzs to:out_file
+ )
+ ) else (
+ format " dc.w 0 ; not a mesh\n" to:out_file
+ )
+
+ format "\n" to:out_file
+ )
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; Fæces\n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_fcs\n" sname to:out_file
+ format "\n" to:out_file
+
+ voff = 0
+
+ for i=1 to objects.count do (
+ format "; group %: %\n" (i-1) objects[i].name to:out_file
+ format "\n" to:out_file
+
+ if classOf objects[i] == Editable_Mesh then (
+ themesh = snapshotAsMesh objects[i]
+ for j=1 to themesh.numfaces do (
+ f = getFace themesh j
+ format " dc.w %,%,%\n" (int (f.x-1+voff)) (int (f.y-1+voff)) (int (f.z-1+voff)) to:out_file
+
+ smat = objects[i].material
+ mattype = "0"
+
+ u1 = 0
+ v1 = 0
+ u2 = 0
+ v2 = 0
+ u3 = 0
+ v3 = 0
+
+ if smat == undefined then (
+ matname = "0"
+ ) else (
+ if getNumSubMtls smat == 0 then (
+ mat = smat
+ ) else (
+ matid = getFaceMatID themesh j
+ mat = smat.MaterialList[matid]
+ )
+ matname = (int mat.diffuse.r)*256*256 + (int mat.diffuse.g)*256 + (int mat.diffuse.b)
+ dmap = mat.diffuseMap
+ if dmap != undefined then (
+
+ mattype = "1"
+ matname = dmap.filename
+ fntokens = filterString matname "\\"
+ matname = fntokens[fntokens.count]
+ fntokens = filterString matname "."
+ matname = fntokens[1]
+
+ fntokens = filterString matname "-"
+ matname = ""
+ for k=1 to fntokens.count do (
+ matname = matname + fntokens[k]
+ if k < fntokens.count then matname=matname+"m"
+ )
+ matname = sname + "_" + matname + "+1024+14"
+
+ tverts = getTVFace theMesh j
+ u1 = (int (getTVert theMesh tverts[1] * 65535).x)
+ v1 = 65535 - (int (getTVert theMesh tverts[1] * 65535).y)
+ u2 = (int (getTVert theMesh tverts[2] * 65535).x)
+ v2 = 65536 - (int (getTVert theMesh tverts[2] * 65535).y)
+ u3 = (int (getTVert theMesh tverts[3] * 65535).x)
+ v3 = 65536 - (int (getTVert theMesh tverts[3] * 65535).y)
+
+ if u1 > 65535 then u1 = 65535
+ if v1 > 65535 then v1 = 65535
+ if u2 > 65535 then u2 = 65535
+ if v2 > 65535 then v2 = 65535
+ if u3 > 65535 then u3 = 65535
+ if v3 > 65535 then v3 = 65535
+
+ /*
+ if u1 < 0 then u1 = 0
+ if v1 < 0 then v1 = 0
+ if u2 < 0 then u2 = 0
+ if v2 < 0 then v2 = 0
+ if u3 < 0 then u3 = 0
+ if v3 < 0 then v3 = 0
+ */
+
+ if mat.opacityMap != undefined then (
+ mattype = "2"
+ )
+ )
+ )
+
+ format " dc.w %\n" mattype to:out_file
+ format " dc.l %\n" matname to:out_file
+ format " dc.w %,%,%,%,%,%\n" u1 v1 u2 v2 u3 v3 to:out_file
+
+ )
+ format "\n" to:out_file
+
+ voff += themesh.numverts
+ )
+ )
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; \n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_mtx\n" sname to:out_file
+ format "\n" to:out_file
+
+ for i = animationRange.start to animationRange.end do (
+
+ sliderTime=i
+
+ format "; index %\n" i to:out_file
+ format "\n" to:out_file
+
+ for j = 1 to objects.count do (
+
+ o=objects[j]
+
+ vpm=getViewTM()
+ tm=o.transform*vpm
+ tm1=tm.row1
+ tm2=tm.row2
+ tm3=tm.row3
+ tm4=tm.row4
+ tm11=formatf tm1.x 6
+ tm12=formatf tm1.y 6
+ tm13=formatf tm1.z 6
+ tm21=formatf tm2.x 6
+ tm22=formatf tm2.y 6
+ tm23=formatf tm2.z 6
+ tm31=formatf tm3.x 6
+ tm32=formatf tm3.y 6
+ tm33=formatf tm3.z 6
+ tm41=formatf tm4.x 6
+ tm42=formatf tm4.y 6
+ tm43=formatf tm4.z 6
+ format " dc.s %,%,%\n" tm11 tm12 tm13 to:out_file
+ format " dc.s %,%,%\n" tm21 tm22 tm23 to:out_file
+ format " dc.s %,%,%\n" tm31 tm32 tm33 to:out_file
+ format " dc.s %,%,%\n" tm41 tm42 tm43 to:out_file
+ format "\n" to:out_file
+ )
+
+ )
+
+ close out_file
+ shelllaunch "notepad.exe" filename
+
+)
+
+-- theend u3 = (int (getTVert theMesh tverts[3] * 65535).x)
+ v3 = 65536 - (int (getTVert theMesh tverts[3] * 65535).y)
+
+ if u1 > 65535 then u1 = 65535
+ if v1 > 65535 then v1 = 65535
+ if u2 > 65535 then u2 = 65535
+ if v2 > 65535 then v2 = 65535
+ if u3 > 65535 then u3 = 65535
+ if v3 > 65535 then v3 = 65535
+
+ /*
+ if u1 < 0 then u1 = 0
+ if v1 < 0 then v1 = 0
+ if u2 < 0 then u2 = 0
+ if v2 < 0 then v2 = 0
+ if u3 < 0 then u3 = 0
+ if v3 < 0 then v3 = 0
+ */
+
+ if mat.opacityMap != undefined then (
+ mattype = "2"
+ )
+ )
+ )
+
+ format " dc.w %\n" mattype to:out_file
+ format " dc.l %\n" matname to:out_file
+ format " dc.w %,%,%,%,%,%\n" u1 v1 u2 v2 u3 v3 to:out_file
+
+ )
+ format "\n" to:out_file
+
+ voff += themesh.numverts
+ )
+ )
+
+ format ";------------------------------------------------------------\n" to:out_file
+ format "; \n" to:out_file
+ format ";------------------------------------------------------------\n" to:out_file
+ format "\n" to:out_file
+ format "%_mtx\n" sname to:out_file
+ format "\n" to:out_file
+
+ for i = animationRange.start to animationRange.end do (
+
+ sliderTime=i
+
+ format "; index %\n" i to:out_file
+ format "\n" to:out_file
+
+ for j = 1 to objects.count do (
+
+ o=objects[j]
+
+ vpm=getViewTM()
+ tm=o.transform*vpm
+ tm1=tm.row1
+ tm2=tm.row2
+ tm3=tm.row3
+ tm4=tm.row4
+ tm11=formatf tm1.x 6
+ tm12=formatf tm1.y 6
+ tm13=formatf tm1.z 6
+ tm21=formatf tm2.x 6
+ tm22=formatf tm2.y 6
+ tm23=formatf tm2.z 6
+ tm31=formatf tm3.x 6
+ tm32=formatf tm3.y 6
+ tm33=formatf tm3.z 6
+ tm41=formatf tm4.x 6
+ tm42=formatf tm4.y 6
+ tm43=formatf tm4.z 6
+ format " dc.s %,%,%\n" tm11 tm12 tm13 to:out_file
+ format " dc.s %,%,%\n" tm21 tm22 tm23 to:out_file
+ format " dc.s %,%,%\n" tm31 tm32 tm33 to:out_file
+ format " dc.s %,%,%\n" tm41 tm42 tm43 to:out_file
+ format "\n" to:out_file
+ )
+
+ )
+
+ close out_file
+ shelllaunch "notepad.exe" filename
+
+)
+
+-- theend
+
+
+void DS3231::setDateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
+{
+ Wire.beginTransmission(DS3231_ADDRESS);
+
+ #if ARDUINO >= 100
+ Wire.write(DS3231_REG_TIME);
+ #else
+ Wire.send(DS3231_REG_TIME);
+ #endif
+
+ #if ARDUINO >= 100
+ Wire.write(dec2bcd(second));
+ Wire.write(dec2bcd(minute));
+ Wire.write(dec2bcd(hour));
+ Wire.write(dec2bcd(dow(year, month, day)));
+ Wire.write(dec2bcd(day));
+ Wire.write(dec2bcd(month));
+ Wire.write(dec2bcd(year-2000));
+ #else
+ Wire.send(dec2bcd(second));
+ Wire.send(dec2bcd(minute));
+ Wire.send(dec2bcd(hour));
+ Wire.send(dec2bcd(dow(year, month, day)));
+ Wire.send(dec2bcd(day));
+ Wire.send(dec2bcd(month));
+ Wire.send(dec2bcd(year-2000));
+ #endif
+
+ #if ARDUINO >= 100
+ Wire.write(DS3231_REG_TIME);
+ #else
+ Wire.send(DS3231_REG_TIME);
+ #endif
+
+ Wire.endTransmission();
+}
- letter sequences ij (capitalized as IJ, and also found as a ligature, IJ or ij), ei, ou, au, oe, doubled vowels (but not ii), kw, ch, sch, oei, ooi, aai and uw (especially eeuw, ieuw, auw, and ouw).
- all consonants, except h, j, q, v, w, x and z can be doubled.
- the letters c (except in the sequence (s)ch), q, x and y are almost only found in loanwords.
- words: het, op, en, een, voor (and compounds of voor).
- word endings: -tje, -sje, -ing, -en, -lijk,
- at the start of words: z-, v-, ge-
- t/m occasionally occurs between two points in time or between numbers (e.g. house numbers).
+void DS3231::setDateTime(uint32_t t)
+{
+ t -= 946681200;
-West Frisian (Frysk)
+ uint16_t year;
+ uint8_t month;
+ uint8_t day;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
- letter sequences: ij, ei, oa
- words: yn
+ second = t % 60;
+ t /= 60;
-Afrikaans (Afrikaans)
+ minute = t % 60;
+ t /= 60;
- Words: 'n, as, vir, nie.
- Similar to Dutch, but:
- the common Dutch letters c and z are rare and used only in loanwords (e.g. chalet);
- the common Dutch vowel ij is not used; instead, i and y are used (e.g. -lik, sy);
- the common Dutch word ending -en is rare, being replaced by -e.
+ hour = t % 24;
+ uint16_t days = t / 24;
+ uint8_t leap;
-German (Deutsch)
+ for (year = 0; ; ++year)
+ {
+ leap = year % 4 == 0;
+ if (days < 365 + leap)
+ {
+ break;
+ }
+ days -= 365 + leap;
+ }
- umlauts (ä, ö, ü), ess-zett (ß)
- letter sequences: ch, sch, tsch, tz, ss,
- common words: der, die, das, den, dem, des, er, sie, es, ist, ich, du, aber
- common endings: -en, -er, -ern, -st, -ung, -chen, -tät
- rare letters: x, y (except in loanwords)
- letter c rarely used except in the sequences listed above and in loanwords
- long compound words
- a period (.) after ordinal numbers, e.g. 3. Oktober
- many capitalised words in the middle of sentences since German capitalizes all nouns.
+ for (month = 1; ; ++month)
+ {
+ uint8_t daysPerMonth = pgm_read_byte(daysArray + month - 1);
-Swedish (Svenska)
+ if (leap && month == 2)
+ {
+ ++daysPerMonth;
+ }
- letters å, ä, ö, rarely é
- common words: och, i, att, det, en, som, är, av, den, på, om, inte, men
- common endings: -ning, -lig, -isk, -ande, -ade, -era, -rna
- common surname endings: -sson, -berg, -borg, -gren, -lund, -lind, -ström, -kvist/qvist/quist
- long compound words
- letter sequences: stj, sj, skj, tj, ck, än
- no use of characters w, z except for foreign proper nouns and some loanwords but x is used, unlike Danish and Norwegian, which replace it with ks
- doubling of consonants common, but doubling of vowels very rare
+ if (days < daysPerMonth)
+ {
+ break;
+ }
+ days -= daysPerMonth;
+ }
-Danish (Dansk)
+ day = days + 1;
- letters æ, ø, å
- common words: af, og, til, er, på, med, det, den;
- common endings: -tion, -ing, -else, -hed;
- long compound words;
- no use of character q, w, x and z except for foreign proper nouns and some loanwords;
- to distinguish from Norwegian: uses letter combination øj; frequent use of æ; spellings of borrowed foreign words are retained (in particular use of c), such as centralstation.
- doubling of consonants common, but doubling of vowels very rare
+ setDateTime(year+2000, month, day, hour, minute, second);
+}
-Norwegian (Norsk)
+void DS3231::setDateTime(const char* date, const char* time)
+{
+ uint16_t year;
+ uint8_t month;
+ uint8_t day;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
- letters æ, ø, å
- common words: av, ble, er, og, en, et, men, i, å, for, eller;
- common endings: -sjon, -ing, -else, -het;
- long compound words;
- no use of character c, w, z and x except for foreign proper nouns and some loanwords;
- two versions of the language: Bokmål (much closer to Danish) and Nynorsk – for example ikke, lørdag, Norge (Bokmål) vs. ikkje, laurdag, Noreg (Nynorsk); Nynorsk uses the word òg; printed materials almost always published in Bokmål only;
- to distinguish from Danish: uses letter combination øy; less frequent use of æ; spellings of borrowed foreign words are ‘Norsified’ (in particular removing use of c), such as sentralstasjon.
- doubling of consonants common, but doubling of vowels very rare
+ year = conv2d(date + 9);
-Icelandic (Íslenska)
+ switch (date[0])
+ {
+ case 'J': month = date[1] == 'a' ? 1 : month = date[2] == 'n' ? 6 : 7; break;
+ case 'F': month = 2; break;
+ case 'A': month = date[2] == 'r' ? 4 : 8; break;
+ case 'M': month = date[2] == 'r' ? 3 : 5; break;
+ case 'S': month = 9; break;
+ case 'O': month = 10; break;
+ case 'N': month = 11; break;
+ case 'D': month = 12; break;
+ }
- letters á, ð, é, í, ó, ú, ý, þ, æ, ö
- common beginnings: fj-, gj-, hj-, hl-, hr-, hv-, kj-, and sj-,
- common endings: -ar (especially -nar), -ir (especially -nir), -ur, -nn (especially -inn)
- no use of character c, q, w, or z except for foreign proper nouns, some loanwords, and, in the case of z, older texts.
- doubling of consonants common, but doubling of vowels very rare
+ day = conv2d(date + 4);
+ hour = conv2d(time);
+ minute = conv2d(time + 3);
+ second = conv2d(time + 6);
-Faroese (Føroyskt)
+ setDateTime(year+2000, month, day, hour, minute, second);
+}
- letters á, ð, í, ó, ú, ý, æ, ø
- letter combinations: ggj, oy, skt
- to distinguish from Icelandic: does not use é or þ, uses ø instead of ö (occasionally rendered as ö on road signs, or even ő).
- doubling of consonants common, but doubling of vowels very rare
+char* DS3231::dateFormat(const char* dateFormat, RTCDateTime dt)
+{
+ char buffer[255];
-Baltic languages
-Latvian (Latviešu)
+ buffer[0] = 0;
- uses diacritics: ā, č, ē, ģ, ī, ķ, ļ, ņ, ō, ŗ, š, ū, ž
- does not have letters: q, w, x, y
- no longer uses ō or ŗ in modern language
- extremely rare doubling of vowels
- rare doubling of consonants
- a period (.) after ordinal numbers, e.g. 2005. gads
- common words: ir, bija, tika, es, viņš
+ char helper[11];
-Lithuanian (Lietuvių)
+ while (*dateFormat != '\0')
+ {
+ switch (dateFormat[0])
+ {
+ // Day decoder
+ case 'd':
+ sprintf(helper, "%02d", dt.day);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'j':
+ sprintf(helper, "%d", dt.day);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'l':
+ strcat(buffer, (const char *)strDayOfWeek(dt.dayOfWeek));
+ break;
+ case 'D':
+ strncat(buffer, strDayOfWeek(dt.dayOfWeek), 3);
+ break;
+ case 'N':
+ sprintf(helper, "%d", dt.dayOfWeek);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'w':
+ sprintf(helper, "%d", (dt.dayOfWeek + 7) % 7);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'z':
+ sprintf(helper, "%d", dayInYear(dt.year, dt.month, dt.day)+1);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'S':
+ strcat(buffer, (const char *)strDaySufix(dt.day));
+ break;
+
+ // Month decoder
+ case 'm':
+ sprintf(helper, "%02d", dt.month);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'n':
+ sprintf(helper, "%d", dt.month);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'F':
+ strcat(buffer, (const char *)strMonth(dt.month));
+ break;
+ case 'M':
+ strncat(buffer, (const char *)strMonth(dt.month), 3);
+ break;
+ case 't':
+ sprintf(helper, "%d", daysInMonth(dt.year, dt.month));
+ strcat(buffer, (const char *)helper);
+ break;
+
+ // Year decoder
+ case 'Y':
+ sprintf(helper, "%d", dt.year);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'y': sprintf(helper, "%02d", dt.year-2000);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'L':
+ sprintf(helper, "%d", isLeapYear(dt.year));
+ strcat(buffer, (const char *)helper);
+ break;
+
+ // Hour decoder
+ case 'H':
+ sprintf(helper, "%02d", dt.hour);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'G':
+ sprintf(helper, "%d", dt.hour);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'h':
+ sprintf(helper, "%02d", hour12(dt.hour));
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'g':
+ sprintf(helper, "%d", hour12(dt.hour));
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'A':
+ strcat(buffer, (const char *)strAmPm(dt.hour, true));
+ break;
+ case 'a':
+ strcat(buffer, (const char *)strAmPm(dt.hour, false));
+ break;
+
+ // Minute decoder
+ case 'i':
+ sprintf(helper, "%02d", dt.minute);
+ strcat(buffer, (const char *)helper);
+ break;
+
+ // Second decoder
+ case 's':
+ sprintf(helper, "%02d", dt.second);
+ strcat(buffer, (const char *)helper);
+ break;
+
+ // Misc decoder
+ case 'U':
+ sprintf(helper, "%lu", dt.unixtime);
+ strcat(buffer, (const char *)helper);
+ break;
+
+ default:
+ strncat(buffer, dateFormat, 1);
+ break;
+ }
+ dateFormat++;
+ }
- visual abundance of letters ą, č, ę, ė, į, š, ų, ū, ų
- does not have letters q, w, x
- extremely rare doubling of vowels and consonants
- many varying forms (usually endings) of the same word, e.g. namas, namo, namus, namams, etc.
- generally long words (absence of articles and fewer prepositions in comparison to Germanic languages)
- common words: ir, yra, kad, bet.
+ return buffer;
+}
-Slavic languages
-Polish (Polski)
+char* DS3231::dateFormat(const char* dateFormat, RTCAlarmTime dt)
+{
+ char buffer[255];
- consonant clusters rz, sz, cz, prz, trz
- includes: ą, ę, ć, ś, ł, ń, ó, ż, ź
- words w, z, we, i, na (several one-letter words)
- words jest, się
- words beginning with był, będzie, jest (forms of copula być, "to be").
+ buffer[0] = 0;
-Czech (Čeština)
+ char helper[11];
- visual abundance of letters ž š ů ě ř
- words je, v
- to distinguish from Slovak: does not use ä, ľ, ĺ, ŕ or ô; ú only appears at the beginning of words.
+ while (*dateFormat != '\0')
+ {
+ switch (dateFormat[0])
+ {
+ // Day decoder
+ case 'd':
+ sprintf(helper, "%02d", dt.day);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'j':
+ sprintf(helper, "%d", dt.day);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'l':
+ strcat(buffer, (const char *)strDayOfWeek(dt.day));
+ break;
+ case 'D':
+ strncat(buffer, strDayOfWeek(dt.day), 3);
+ break;
+ case 'N':
+ sprintf(helper, "%d", dt.day);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'w':
+ sprintf(helper, "%d", (dt.day + 7) % 7);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'S':
+ strcat(buffer, (const char *)strDaySufix(dt.day));
+ break;
+
+ // Hour decoder
+ case 'H':
+ sprintf(helper, "%02d", dt.hour);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'G':
+ sprintf(helper, "%d", dt.hour);
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'h':
+ sprintf(helper, "%02d", hour12(dt.hour));
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'g':
+ sprintf(helper, "%d", hour12(dt.hour));
+ strcat(buffer, (const char *)helper);
+ break;
+ case 'A':
+ strcat(buffer, (const char *)strAmPm(dt.hour, true));
+ break;
+ case 'a':
+ strcat(buffer, (const char *)strAmPm(dt.hour, false));
+ break;
+
+ // Minute decoder
+ case 'i':
+ sprintf(helper, "%02d", dt.minute);
+ strcat(buffer, (const char *)helper);
+ break;
+
+ // Second decoder
+ case 's':
+ sprintf(helper, "%02d", dt.second);
+ strcat(buffer, (const char *)helper);
+ break;
+
+ default:
+ strncat(buffer, dateFormat, 1);
+ break;
+ }
+ dateFormat++;
+ }
-Slovak (Slovenčina)
+ return buffer;
+}
- visual abundance of letters ž š č;
- uses: ä, ľ, and ô and (very rarely) ĺ and ŕ;
- typical suffixes: -cia, -ť;
- to distinguish from Czech: does not use ě, ř or ů.
+RTCDateTime DS3231::getDateTime(void)
+{
+ int values[7];
-Croatian (Hrvatski)
+ Wire.beginTransmission(DS3231_ADDRESS);
+ #if ARDUINO >= 100
+ Wire.write(DS3231_REG_TIME);
+ #else
+ Wire.send(DS3231_REG_TIME);
+ #endif
+ Wire.endTransmission();
- similar to Serbian
- letters-digraphs dž, lj, nj
- does not have q, w, x, y
- typical suffixes: -ti, -ći
- special letters: č, ć, š, ž, đ
- common words: a, i, u, je
- to distinguish from Serbian: sequences -ije- and -je- are common; verbs ending in -irati, -iran
+ Wire.requestFrom(DS3231_ADDRESS, 7);
-Serbian (Srpski/Српски)
-Serbian Latin
+ while(!Wire.available()) {};
- similar to Croatian
- letters-digraphs dž, lj, nj (lj and nj are somewhat more common than dž, although not by much)
- no q, w, x, y
- typical verb suffixes -ti, -ći (infinitive is much less used than in Croatian)
- foreign words might end in -tija, -ovan, -ovati, -uje
- special letters: đ (rare), č, š (common), ć, ž (less common)
- common words: a, i, u, je, jeste
- future tense suffix -iće, -ićeš, -ićemo, -ićete (not found in Croatian)
- vowel sequences -ije- and -je- are very often in Serbian that is spoken in Bosnia and Herzegovina, Montenegro and Croatia (ijekavica), but it does not appear in Serbia because each of those sequences are substituted with -e- (ekavica).
+ for (int i = 6; i >= 0; i--)
+ {
+ #if ARDUINO >= 100
+ values[i] = bcd2dec(Wire.read());
+ #else
+ values[i] = bcd2dec(Wire.receive());
+ #endif
+ }
-Serbian Cyrillic
+ Wire.endTransmission();
- uses Џ, Ј, Љ, Њ, Ђ, Ћ
- does not use Щ, Ъ, Ы, Ь, Э, Ю, Я, Ё, Є, Ґ, Ї, І, Ў
- to distinguish from Macedonian: does not use Ѕ, Ѓ, Ќ
+ t.year = values[0] + 2000;
+ t.month = values[1];
+ t.day = values[2];
+ t.dayOfWeek = values[3];
+ t.hour = values[4];
+ t.minute = values[5];
+ t.second = values[6];
+ t.unixtime = unixtime();
-Celtic languages
-Welsh (Cymraeg)
+ return t;
+}
- letters Ŵ, ŵ used in Welsh
- words y, yr, yn, a, ac, i, o
- letter sequences wy, ch, dd, ff, ll, mh, ngh, nh, ph, rh, th, si
- letters not used: k, q, v, x, z
- letter only used rarely, in loanwords: j
- commonly accented letters: â, ê, î, ô, û, ŵ, ŷ, although acute (´), grave (`), and dieresis (¨) accents can hypothetically occur on all vowels
- word endings: -ion, -au, -wr, -wyr
- y is the most common letter in the language
- w between consonants (w in fact represents a vowel in the Welsh language)
- circumflex accent (^) is by far the commonest diacritical mark, although diacritics are often omitted altogether
+uint8_t DS3231::isReady(void)
+{
+ return true;
+}
-Irish (Gaeilge)
+void DS3231::enableOutput(bool enabled)
+{
+ uint8_t value;
- vowels with acute accents: á é í ó ú
- words beginning with letter sequences bp dt gc bhf
- letter sequences sc cht
- no use of the letter J, K, Q, V, W.
- frequent bh, ch, dh, fh, gh, mh, th, sh
- to distinguish from (Scottish) Gaelic: there may be words or names with the second (or even third) letter capitalized instead of the first: hÉireann.
+ value = readRegister8(DS3231_REG_CONTROL);
-Scottish Gaelic (Gàidhlig)
+ value &= 0b11111011;
+ value |= (!enabled << 2);
- vowels with grave accents: à è ì ò ù (é and ó still occasionally seen but usage is now discouraged)
- letter sequences sg chd
- frequent bh, ch, dh, fh, gh, mh, th, sh
- to distinguish from Irish: prefixes are hyphenated, so capitals in the middle of words generally do not occur: an t-Oban.
+ writeRegister8(DS3231_REG_CONTROL, value);
+}
-Albanian (Shqip)
+void DS3231::setBattery(bool timeBattery, bool squareBattery)
+{
+ uint8_t value;
- unique letters: ë, ç.
- ë is the most common letter in the language.
- the letter w is not used except in loanwords.
- dh, gj, ll, nj, rr, sh, th, xh, and zh are considered one letter instead of two.
- common words: po, jo, dhe, i, të, me
+ value = readRegister8(DS3231_REG_CONTROL);
-Maltese (Malti)
+ if (squareBattery)
+ {
+ value |= 0b01000000;
+ } else
+ {
+ value &= 0b10111111;
+ }
- unique letters: ċ, ġ, ħ, għ, ħ, ż
- semitic origin, fairly intelligible with Arabic
- uses il-xxx for the definite article
+ if (timeBattery)
+ {
+ value &= 0b01111011;
+ } else
+ {
+ value |= 0b10000000;
+ }
-Iranian languages
-Kurdish (Kurdî / كوردی)
+ writeRegister8(DS3231_REG_CONTROL, value);
+}
- uses circumflex ( ^ ): ê, î, û and cedilla ( ¸ ): ç, ş
- the word xwe (oneself, myself, yourself etc.) appears frequently and is highly specific (xw combination)
- ( I, i ) is the most common letter in the language
- uses eight vowels (a, e, ê, i, î, o, u, û)
- impossible to find a word without any vowel
- has lots of compound words
+bool DS3231::isOutput(void)
+{
+ uint8_t value;
-Finno-Ugric languages
-Finnish (Suomi)
+ value = readRegister8(DS3231_REG_CONTROL);
- distinct letters å, ä and ö; but never õ or ü (y takes the place of ü)
- b, f, z, š and ž appear in loanwords and proper names only; the last two are substituted with sh or zh in some texts
- c, q, w, x, å appear in (typically foreign) proper names only
- outside of loanwords, d appears only between vowels or in hd
- outside of loanwords, g only appears in ng
- outside of loanwords, words do not begin with two consonants; this is reflected in the general syllable structure, where consonant clusters only occur across syllable boundaries, except in some loanwords
- common words: sinä, on
- common endings: -nen, -ka/-kä, -in, -t (plural suffix)
- common vowel combinations: ai, uo, ei, ie, oi, yö, äi
- unusually high degree of letter duplication, both vowels and consonants will be geminated, for example aa, ee, ii, kk, ll, ss, yy, ää
- frequent long words
+ value &= 0b00000100;
+ value >>= 2;
-Estonian (Eesti)
+ return !value;
+}
- distinct letters: õ, ä, ö and ü; but never ß or å
- similar to Finnish, except:
- letter y is not used, except in loanwords (ü is the corresponding vowel)
- letters b and g (without preceding n) are found outside of loanwords
- occasional use of š and ž, mainly in loanwords (plus combination tš)
- loanwords more common generally than in Finnish, mainly loaned from German
- words end in consonants more frequently than in Finnish, word-final b, d, v being particularly typical
- letter d is much more common in Estonian than in Finnish, and in Estonian it is often the last letter of the word (plural suffix), which it never is in Finnish
- double öö more common than in Finnish; other doubles can include õõ, üü, rarely hh (for German ch) and even šš
- common words: ja, on, ei, ta, see, või.
+void DS3231::setOutput(DS3231_sqw_t mode)
+{
+ uint8_t value;
-Hungarian (Magyar)
+ value = readRegister8(DS3231_REG_CONTROL);
- letters ő and ű (double acute accent) unique to Hungarian
- accented letters á and é frequent
- letter combinations: cs, dz, dzs, gy, ly, ny, sz, ty, zs (all classed as separate letters), leg‐, ‐obb (note: sz also common in Polish)
- common words: a, az, ez, egy, és, van, hogy
- letter k very frequent (plural suffix)
+ value &= 0b11100111;
+ value |= (mode << 3);
-Eskimo–Aleut languages
-Greenlandic
+ writeRegister8(DS3231_REG_CONTROL, value);
+}
- long polysynthetic words (a single word can number 30+ letters)
- relatively abundant n, q (not necessarily followed by u), u
- ubiquitous double consonants and vowels (aa, ii, qq, uu, more rarely ee, oo)
- vowels a, i, u conspicuously more frequent than e, o (which are only found before q and r)
- no diphthongs except occasional word-final ai, only consonant combinations besides double consonants and (n)ng consist of r + consonant
- old spellings (now abolished in spelling reform) sometimes included acute accent, circumflex and/or tilde: Qânâq vs. Qaanaaq.
+DS3231_sqw_t DS3231::getOutput(void)
+{
+ uint8_t value;
-Southern Athabaskan languages
+ value = readRegister8(DS3231_REG_CONTROL);
- vowels with acute accent, ogonek (nasal hook), or both: á, ą, ą́
- doubled vowels: aa, áá, ąą, ą́ą́
- slashed l: ł (check not Polish!)
- n with acute accent: ń
- quotation mark: ' or ’
- sequences: dl, tł, tł’, dz, ts’, ií, áa, aá
- may have rather long words
+ value &= 0b00011000;
+ value >>= 3;
-Navajo (Diné bizaad)
+ return (DS3231_sqw_t)value;
+}
+
+void DS3231::enable32kHz(bool enabled)
+{
+ uint8_t value;
+
+ value = readRegister8(DS3231_REG_STATUS);
+
+ value &= 0b11110111;
+ value |= (enabled << 3);
+
+ writeRegister8(DS3231_REG_STATUS, value);
+}
+
+bool DS3231::is32kHz(void)
+{
+ uint8_t value;
-In addition to the above,
+ value = readRegister8(DS3231_REG_STATUS);
- does not use u, ú, or ų
+ value &= 0b00001000;
+ value >>= 3;
-(Mescalero / Chiricahua) (Mashgaléń / Chidikáágo)
+ return value;
+}
-In addition to the above,
- uses: u, ú, ų
- does not use o, ó, or ǫ
+#ifndef DS3231_h
+#define DS3231_h
-Guaraní
+#if ARDUINO >= 100
+#include "Arduino.h"
+#else
+#include "WProgram.h"
+#endif
- lots of tildes over vowels (including y) and n
- tilde over g: g̃—it's the only language in the world to use it. Example words: hagũa and g̃uahẽ.
- b, d, and g usually do not occur without m or n before (mb, nd, ng) unless they're Spanish loan words.
- f, l, q, w, x, z extremely rare outside loan words
- does not use c without h: ch
+#define DS3231_ADDRESS (0x68)
-Japanese in Romaji (Nihongo/日本語)
+#define DS3231_REG_TIME (0x00)
+#define DS3231_REG_ALARM_1 (0x07)
+#define DS3231_REG_ALARM_2 (0x0B)
+#define DS3231_REG_CONTROL (0x0E)
+#define DS3231_REG_STATUS (0x0F)
+#define DS3231_REG_TEMPERATURE (0x11)
- words: desu, aru, suru, esp. at end of sentences;
- word endings: -masu, -masen, -shita;
- letters: Japanese almost always alternates between a consonant and a vowel. Exceptions are digraphs shi and chi, affricate tsu, gemination (two of the same consonant in a row) and palatalization (a consonant followed by the letter y).
- a macron or circumflex may be used to indicate doubled vowels, eg. Tōkyō
- common words: no, o, wa, de, ni
+#ifndef RTCDATETIME_STRUCT_H
+#define RTCDATETIME_STRUCT_H
+struct RTCDateTime
+{
+ uint16_t year;
+ uint8_t month;
+ uint8_t day;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
+ uint8_t dayOfWeek;
+ uint32_t unixtime;
+};
-(Note: Romaji is not often used in Japanese script. It is most often used for foreigners learning the pronunciation of the Japanese language.)
-Hmong (Hmoob) written in Romanized Popular Alphabet
+struct RTCAlarmTime
+{
+ uint8_t day;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
+};
+#endif
- Almost all written words are quite short (one syllable).
- Syllables (unless they are pronounced with mid tone) end in a tone letter: one of b s j v m g d, leading to apparent "consonant clusters" such as -wj
- w can be the main vowel of a syllable (e.g. tswv)
- Syllables can begin with sequences such as hm-, ntxh-, nq-.
- Syllables ending in double vowels (especially -oo, -ee) possibly followed by a tone letters (as in Hmoob "Hmong").
+typedef enum
+{
+ DS3231_1HZ = 0x00,
+ DS3231_4096HZ = 0x01,
+ DS3231_8192HZ = 0x02,
+ DS3231_32768HZ = 0x03
+} DS3231_sqw_t;
-Vietnamese (tiếng Việt)
+typedef enum
+{
+ DS3231_EVERY_SECOND = 0b00001111,
+ DS3231_MATCH_S = 0b00001110,
+ DS3231_MATCH_M_S = 0b00001100,
+ DS3231_MATCH_H_M_S = 0b00001000,
+ DS3231_MATCH_DT_H_M_S = 0b00000000,
+ DS3231_MATCH_DY_H_M_S = 0b00010000
+} DS3231_alarm1_t;
+
+typedef enum
+{
+ DS3231_EVERY_MINUTE = 0b00001110,
+ DS3231_MATCH_M = 0b00001100,
+ DS3231_MATCH_H_M = 0b00001000,
+ DS3231_MATCH_DT_H_M = 0b00000000,
+ DS3231_MATCH_DY_H_M = 0b00010000
+} DS3231_alarm2_t;
+
+class DS3231
+{
+ public:
+
+ bool begin(void);
+
+ void setDateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second);
+ void setDateTime(uint32_t t);
+ void setDateTime(const char* date, const char* time);
+ RTCDateTime getDateTime(void);
+ uint8_t isReady(void);
+
+ DS3231_sqw_t getOutput(void);
+ void setOutput(DS3231_sqw_t mode);
+ void enableOutput(bool enabled);
+ bool isOutput(void);
+ void enable32kHz(bool enabled);
+ bool is32kHz(void);
+
+ void forceConversion(void);
+ float readTemperature(void);
+
+ void setAlarm1(uint8_t dydw, uint8_t hour, uint8_t minute, uint8_t second, DS3231_alarm1_t mode, bool armed = true);
+ RTCAlarmTime getAlarm1(void);
+ DS3231_alarm1_t getAlarmType1(void);
+ bool isAlarm1(bool clear = true);
+ void armAlarm1(bool armed);
+ bool isArmed1(void);
+ void clearAlarm1(void);
+
+ void setAlarm2(uint8_t dydw, uint8_t hour, uint8_t minute, DS3231_alarm2_t mode, bool armed = true);
+ RTCAlarmTime getAlarm2(void);
+ DS3231_alarm2_t getAlarmType2(void);
+ bool isAlarm2(bool clear = true);
+ void armAlarm2(bool armed);
+ bool isArmed2(void);
+ void clearAlarm2(void);
+
+ void setBattery(bool timeBattery, bool squareBattery);
+
+ char* dateFormat(const char* dateFormat, RTCDateTime dt);
+ char* dateFormat(const char* dateFormat, RTCAlarmTime dt);
+
+ private:
+ RTCDateTime t;
+
+ char *strDayOfWeek(uint8_t dayOfWeek);
+ char *strMonth(uint8_t month);
+ char *strAmPm(uint8_t hour, bool uppercase);
+ char *strDaySufix(uint8_t day);
+
+ uint8_t hour12(uint8_t hour24);
+ uint8_t bcd2dec(uint8_t bcd);
+ uint8_t dec2bcd(uint8_t dec);
+
+ long time2long(uint16_t days, uint8_t hours, uint8_t minutes, uint8_t seconds);
+ uint16_t date2days(uint16_t year, uint8_t month, uint8_t day);
+ uint8_t daysInMonth(uint16_t year, uint8_t month);
+ uint16_t dayInYear(uint16_t year, uint8_t month, uint8_t day);
+ bool isLeapYear(uint16_t year);
+ uint8_t dow(uint16_t y, uint8_t m, uint8_t d);
+
+ uint32_t unixtime(void);
+ uint8_t conv2d(const char* p);
+
+ void writeRegister8(uint8_t reg, uint8_t value);
+ uint8_t readRegister8(uint8_t reg);
+};
- Roman characters with more than one diacritical mark on the same vowel. See above.
- Almost all written words are quite short (one syllable, mostly less than six characters long).
- Words beginning with ng or ngh
- Words ending with nh
- common words: cái, không, có, ở, của, và, tại, với, để, đã, sẽ, đang, tôi, bạn, chúng, là
+#endif
-Vietnamese Quoted-Readable (VIQR)
+#include
+#include
+#include
+#include
+#include
+#include
+#include
- The following characters (often in combination) after vowels: ^ ( + ' ` ? ~ .
- DD, Dd, or dd
- The following character before punctuation: \
+#define cudaCheck(err) (cudaCheck(err, __FILE__, __LINE__))
-Vietnamese VNI encoding
+const std::string errLogFile = "matrixValidationFailure.txt";
- The digits 1-8 after vowels
- The digit 9 after a D or d
- The following character before numbers: \
+int main(int argc, char **argv) {
+ if (argc != 2) {
+ std::cerr << "Please select a kernel (range 0 - 12, 0 for NVIDIA cuBLAS)"
+ << std::endl;
+ exit(EXIT_FAILURE);
+ }
-Vietnamese Telex
+ // get kernel number
+ int kernel_num = std::stoi(argv[1]);
+ if (kernel_num < 0 || kernel_num > 12) {
+ std::cerr << "Please enter a valid kernel number (0-12)" << std::endl;
+ exit(EXIT_FAILURE);
+ }
- The following characters after vowels: s f r x j
- The following vowels, doubled up: a e o
- The letter w after the following characters: a o u
- DD, Dd, or dd
+ // get environment variable for device
+ int deviceIdx = 0;
+ if (getenv("DEVICE") != NULL) {
+ deviceIdx = atoi(getenv("DEVICE"));
+ }
+ cudaCheck(cudaSetDevice(deviceIdx));
+
+ printf("Running kernel %d on device %d.\n", kernel_num, deviceIdx);
+
+ // print some device info
+ // CudaDeviceInfo();
+
+ // Declare the handle, create the handle, cublasCreate will return a value of
+ // type cublasStatus_t to determine whether the handle was created
+ // successfully (the value is 0)
+ cublasHandle_t handle;
+ if (cublasCreate(&handle)) {
+ std::cerr << "Create cublas handle error." << std::endl;
+ exit(EXIT_FAILURE);
+ };
+
+ // Using cudaEvent for gpu stream timing, cudaEvent is equivalent to
+ // publishing event tasks in the target stream
+ float elapsed_time;
+ cudaEvent_t beg, end;
+ cudaEventCreate(&beg);
+ cudaEventCreate(&end);
+
+ // cuBLAS FLOPs ceiling is reached at 8192
+ std::vector SIZE = {128, 256, 512, 1024, 2048, 4096};
+
+ long m, n, k, max_size;
+ max_size = SIZE[SIZE.size() - 1];
+ std::cout << "Max size: " << max_size << std::endl;
+
+ float alpha = 0.5, beta = 3.0; // GEMM input parameters, C=α*AB+β*C
+
+ float *A = nullptr, *B = nullptr, *C = nullptr,
+ *C_ref = nullptr; // host matrices
+ float *dA = nullptr, *dB = nullptr, *dC = nullptr,
+ *dC_ref = nullptr; // device matrices
+
+ A = (float *)malloc(sizeof(float) * max_size * max_size);
+ B = (float *)malloc(sizeof(float) * max_size * max_size);
+ C = (float *)malloc(sizeof(float) * max_size * max_size);
+ C_ref = (float *)malloc(sizeof(float) * max_size * max_size);
+
+ randomize_matrix(A, max_size * max_size);
+ randomize_matrix(B, max_size * max_size);
+ randomize_matrix(C, max_size * max_size);
+
+ cudaCheck(cudaMalloc((void **)&dA, sizeof(float) * max_size * max_size));
+ cudaCheck(cudaMalloc((void **)&dB, sizeof(float) * max_size * max_size));
+ cudaCheck(cudaMalloc((void **)&dC, sizeof(float) * max_size * max_size));
+ cudaCheck(cudaMalloc((void **)&dC_ref, sizeof(float) * max_size * max_size));
+
+ cudaCheck(cudaMemcpy(dA, A, sizeof(float) * max_size * max_size,
+ cudaMemcpyHostToDevice));
+ cudaCheck(cudaMemcpy(dB, B, sizeof(float) * max_size * max_size,
+ cudaMemcpyHostToDevice));
+ cudaCheck(cudaMemcpy(dC, C, sizeof(float) * max_size * max_size,
+ cudaMemcpyHostToDevice));
+ cudaCheck(cudaMemcpy(dC_ref, C, sizeof(float) * max_size * max_size,
+ cudaMemcpyHostToDevice));
+
+ int repeat_times = 50;
+ for (int size : SIZE) {
+ m = 32;
+ n = k = size;
+
+ std::cout << "dimensions(m,n,k) " << m << "," << n << "," << k << ", alpha: " << alpha
+ << ", beta: " << beta << std::endl;
+ // Verify the correctness of the calculation, and execute it once before the
+ // kernel function timing to avoid cold start errors
+ if (kernel_num != 0) {
+ run_kernel(0, m, n, k, alpha, dA, dB, beta, dC_ref,
+ handle); // cuBLAS
+ run_kernel(kernel_num, m, n, k, alpha, dA, dB, beta, dC,
+ handle); // Executes the kernel, modifies the result matrix
+ cudaCheck(cudaDeviceSynchronize());
+ cudaCheck(cudaGetLastError()); // Check for async errors during kernel run
+ cudaMemcpy(C, dC, sizeof(float) * m * n, cudaMemcpyDeviceToHost);
+ cudaMemcpy(C_ref, dC_ref, sizeof(float) * m * n, cudaMemcpyDeviceToHost);
+
+ if (!verify_matrix(C_ref, C, m * n)) {
+ std::cout
+ << "Failed to pass the correctness verification against NVIDIA "
+ "cuBLAS."
+ << std::endl;
+ if (m <= 128) {
+ std::cout << " Logging faulty output into " << errLogFile << "\n";
+ std::ofstream fs;
+ fs.open(errLogFile);
+ fs << "A:\n";
+ print_matrix(A, m, n, fs);
+ fs << "B:\n";
+ print_matrix(B, m, n, fs);
+ fs << "C:\n";
+ print_matrix(C, m, n, fs);
+ fs << "Should:\n";
+ print_matrix(C_ref, m, n, fs);
+ }
+ exit(EXIT_FAILURE);
+ }
+ }
-Chinese, Romanized
-Standard Mandarin (現代標準漢語)
+ cudaEventRecord(beg);
+ for (int j = 0; j < repeat_times; j++) {
+ // We don't reset dC between runs to save time
+ run_kernel(kernel_num, m, n, k, alpha, dA, dB, beta, dC, handle);
+ }
+ cudaEventRecord(end);
+ cudaEventSynchronize(beg);
+ cudaEventSynchronize(end);
+ cudaEventElapsedTime(&elapsed_time, beg, end);
+ elapsed_time /= 1000.; // Convert to seconds
+
+ long flops = 2 * m * n * k;
+ printf(
+ "Average elapsed time: (%7.6f) s, performance: (%7.1f) GFLOPS. size: "
+ "(%ld).\n",
+ elapsed_time / repeat_times,
+ (repeat_times * flops * 1e-9) / elapsed_time, m);
+ fflush(stdout);
+ // make dC and dC_ref equal again (we modified dC while calling our kernel
+ // for benchmarking)
+ cudaCheck(cudaMemcpy(dC, dC_ref, sizeof(float) * m * n,
+ cudaMemcpyDeviceToDevice));
+ }
- In general, Mandarin syllables end only in vowels or n, ng, r; never in p, t, k, m
+ // Free up CPU and GPU space
+ free(A);
+ free(B);
+ free(C);
+ free(C_ref);
+ cudaFree(dA);
+ cudaFree(dB);
+ cudaFree(dC);
+ cudaFree(dC_ref);
+ cublasDestroy(handle);
+
+ return 0;
+};
-Pinyin
+#include
+#include
+#include
- Words beginning with x, q, zh
- Tone marks on vowels, such as ā, á, ǎ, à
- For convenience while using a computer, these are sometimes substituted with numbers, e.g. a1, a2, a3, a4
+__global__ void kernel(uint *A, uint *B, int row) {
+ auto x = threadIdx.x / 4;
+ auto y = threadIdx.x % 4;
+ A[x * row + y] = x;
+ B[x * row + y] = y;
+}
-Wade–Giles
+int main(int argc, char **argv) {
+ uint *Xs, *Ys;
+ uint *Xs_d, *Ys_d;
- Words do not begin with b, d, g, z, q, x, r
- Words beginning with hs
- Many hyphenated words
- Apostrophes after initial letters or digraphs, e.g. t'a, ch'i
+ uint SIZE = 4;
-Gwoyeu Romatzyh
+ Xs = (uint *)malloc(SIZE * SIZE * sizeof(uint));
+ Ys = (uint *)malloc(SIZE * SIZE * sizeof(uint));
- Many unusual vowel combinations such as ae, eei, ii, iee, oou, yy, etc.
- Insertion of r, e.g. arn, erng, etc.
- Words ending in nn, nq
+ cudaMalloc((void **)&Xs_d, SIZE * SIZE * sizeof(uint));
+ cudaMalloc((void **)&Ys_d, SIZE * SIZE * sizeof(uint));
-Southern Min / Min-Nan (Bân-lâm-gí/Bân-lâm-gú) in Pe̍h-ōe-jī
+ dim3 grid_size(1, 1, 1);
+ dim3 block_size(4 * 4);
- Many hyphenated words.
- Words can end in p, t, k, m, n, ng, h; never r
- Roman characters with many diacritical marks on vowels. Unlike Vietnamese, each character has at most one such mark.
- Unusual combining characters, namely · (middle dot, always after o) and | (vertical bar). ¯ (macron) is also common.
+ kernel<<>>(Xs_d, Ys_d, 4);
-Austronesian languages
-Malay (bahasa Melayu) and Indonesian (bahasa Indonesia)
+ cudaMemcpy(Xs, Xs_d, SIZE * SIZE * sizeof(uint), cudaMemcpyDeviceToHost);
+ cudaMemcpy(Ys, Ys_d, SIZE * SIZE * sizeof(uint), cudaMemcpyDeviceToHost);
-May contain the following:
-Prefixes: me-, mem-, memper-, pe-, per-, di-, ke-
-Suffixes: -kan, -an, -i
-Others (these almost always written in lowercase): yang, dan, di, ke, oleh, itu
+ cudaDeviceSynchronize();
-Malay and Indonesian are mutually intelligible to proficient speakers, although translators and interpreters will generally be specialists in one or other language. See Comparison of Standard Malay and Indonesian.
+ for (int row = 0; row < SIZE; ++row) {
+ for (int col = 0; col < SIZE; ++col) {
+ std::cout << "[" << Xs[row * SIZE + col] << "|" << Ys[row * SIZE + col]
+ << "] ";
+ }
+ std::cout << "\n";
+ }
-Frequent use of the letter 'a' (comparable to the frequency of the English 'e').
-Polynesian languages
+ cudaFree(Xs_d);
+ cudaFree(Ys_d);
+ free(Xs);
+ free(Ys);
+}
-Most Polynesian languages use A E F G H I K L M N O P R S T U V and ʻ (sometimes written ' or Q)
+name: SGEMM_CUDA
+channels:
+ - conda-forge
+dependencies:
+ - python
+ - black
+ - cmake
+ - matplotlib
+ - seaborn
+ - tabulate
- L : Nuclear Polynesian languages (Tongan, Samoan, Tuvaluan, Tokelauan...) as in fale
- R : Eastern Polynesian languages (NZ Māori, Tahitian, Cook Islands Māori, Rapa Nui...) as in fare
- K : most Polynesian languages except Hawaiian, Samoan, Tahitian
- H : most Polynesian languages except Samoan
- WH : NZ Māori (whenua)
- Consonants always separated by one or more vowels (fenua, Haʻapai, ʻolelo)
- Short and long vowels, written either with a macron (āēīōū) or by replication (aa, ee, ii, oo, uu)
- Frequent diphtongs (oiaue, māori)
- Words always end with a vowel
- Loanwords are translitterated (like in Japanese): Sesu Kilisito=Jesus Christ, polokalama=program)
- Frequent English or French loanwords (depending on colonial history)
+.PHONY: all build debug clean profile bench cuobjdump
-Tongan (lea fakatonga)
+CMAKE := cmake
- A E F H I K L M N NG O P S T U V ʻ
- ng (Tonga), h, endings in -onua (fonua)
- article te
- frequent words: 'o, te, ki, mei, i, faka-
- English loanwords
+BUILD_DIR := build
+BENCHMARK_DIR := benchmark_results
-Samoan (gagana samoa)
+all: build
- A E F G I L M N O P S T U V ʻ
- no K letter, uses okina (ʻ) or nothing instead (faka in Tongan is faʻa in Samoan)
- frequent use of L (le)
- frequent words: o, e, le, se, a, i, ma
+build:
+ @mkdir -p $(BUILD_DIR)
+ @cd $(BUILD_DIR) && $(CMAKE) -DCMAKE_BUILD_TYPE=Release ..
+ @$(MAKE) -C $(BUILD_DIR)
-Wallisian (lea faka'uvea)
+debug:
+ @mkdir -p $(BUILD_DIR)
+ @cd $(BUILD_DIR) && $(CMAKE) -DCMAKE_BUILD_TYPE=Debug ..
+ @$(MAKE) -C $(BUILD_DIR)
- A E F G H I K L M N O P S T U V ʻ
- distinguish from Tongan: g instead of ng (tokaga)
- article te
- h is more frequent than s (tahi)
- frequent words: ko, te, ki, mai, i, o, ne'e, e, mo, faka-
- French loanwords
+clean:
+ @rm -rf $(BUILD_DIR)
-East Futunan (lea fakafutuna)
+FUNCTION := $$(cuobjdump -symbols build/sgemm | grep -i Warptiling | awk '{print $$NF}')
- A E F G H I K L M N O P S T U V ʻ
- article le
- frequent words: ko, le, ki, mei, i, o, mo, faka-
- distinguish from Wallisian: S is more frequent than H (tasi)
- distinguish from Samoan: letter K
- French loanwords
+cuobjdump: build
+ @cuobjdump -arch sm_86 -sass -fun $(FUNCTION) build/sgemm | c++filt > build/cuobjdump.sass
+ @cuobjdump -arch sm_86 -ptx -fun $(FUNCTION) build/sgemm | c++filt > build/cuobjdump.ptx
-Turkic languages
+# Usage: make profile KERNEL= PREFIX=
+profile: build
+ @ncu --set full --export $(BENCHMARK_DIR)/$(PREFIX)kernel_$(KERNEL) --force-overwrite $(BUILD_DIR)/sgemm $(KERNEL)
-Note that some Turkic languages like Azeri and Turkmen use a similar Latin alphabet (often Jaŋalif) and similar words, and might be confused with Turkish. Azeri has the letters Əə, Xx and Qq not present in the Turkish alphabet, and Türkmen has Ää, Žž, Ňň, Ýý and Ww. Latin Characters uniquely (or nearly uniquely) used for Turkic languages: Əə, Ŋŋ, Ɵɵ, Ьь, Ƣƣ, Ğğ, İ, and ı. All Turkic languages can form long words by adding multiple suffixes.
-Turkish (Türkçe/Türkiye_Türkçesi)
-Turkish Alphabet
+bench: build
+ @bash gen_benchmark_results.sh
-Lowercase: a b c ç d e f g ğ h ı i j k l m n o ö p r s ş t u ü v y z
-Uppercase: A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z
-Common words
+[-0.01, 3.00, 3.01, -2.04, -1.02, -3.02, 0.02, 0.02, 4.02, 4.03, -3.01, -3.04, 0.02, 4.01, 4.02, -4.01, -3.03, 1.01, -4.00, -1.04, -0.02, 3.03, -0.03, -1.04, 3.04, 2.03, 3.03, -1.04, -3.01, -3.04, 4.01, -2.01, 3.02, 2.03, -3.03, 1.00, 0.03, -1.01, -2.00, 4.03, -3.04, 2.02, 1.00, -3.04, 2.02, 2.03, 0.00, -4.02, -3.01, -4.02, -2.03, 1.00, 1.03, -3.01, -2.03, 0.00, 3.03, -4.02, 1.02, -1.02, 4.01, 1.02, 3.00, 1.03, 4.01, -0.03, 1.03, -2.02, -1.01, 2.02, -3.01, -0.04, 4.02, 2.04, -3.03, -2.00, 2.01, 4.04, 1.02, -0.01, 3.00, -2.02, -3.04, 1.03, -3.01, 3.03, -2.03, -4.02, 0.03, 0.00, -4.03, -4.00, -1.00, 2.02, 3.02, -4.01, -0.00, 0.01, 1.03, 4.03, 4.00, -0.04, 4.02, -2.04, 0.02, -2.03, 0.04, -2.01, 2.03, -3.02, 4.03, 3.04, 3.00, -1.03, -0.03, -4.03, -4.00, 4.02, 2.02, -4.00, -4.04, 4.04, -0.00, 1.01, -3.03, -0.03, 1.04, -2.01, -0.00, 3.04, 1.03, 2.04, 4.04, -1.02, 2.03, 0.03, 1.01, -4.04, 1.01, -1.02, -2.03, 3.00, 0.04, -0.00, -0.04, -1.04, 0.02, 3.01, -4.03, 0.01, 3.03, 0.01, 1.03, 3.00, -3.00, 1.04, 0.04, -2.04, -1.00, 0.02, 0.01, -2.01, -4.02, 4.02, -2.01, 2.04, -1.01, 2.03, 2.01, 0.02, 1.02, 4.01, 2.00, 1.02, 3.04, -1.01, -2.04, 3.02, 1.01, 0.04, 1.00, -3.04, 3.03, -2.00, 3.00, -3.01, 4.01, 3.01, 1.02, 0.02, 3.00, -1.00, 4.03, -0.02, 1.03, 1.01, 4.02, 4.02, 1.01, 0.01, 4.04, 2.02, 4.01, 4.04, -1.02, 3.03, 4.04, 3.04, -1.00, -1.02, -3.02, 2.01, -0.02, -1.01, 4.02, 0.03, 4.04, -2.03, -2.04, -2.02, -4.00, -3.03, -0.00, -0.03, 4.02, 2.04, -3.00, 2.04, -1.02, 0.01, -0.00, 3.04, -4.01, -2.01, 2.02, -4.01, 3.01, -2.03, 4.04, 3.01, -4.02, -2.00, -4.01, 3.03, -0.01, 2.02, -4.00, 3.03, 1.04, 2.02, -3.03, 2.01, 2.02, -0.02, -4.02, -2.00;
+-1.04, -1.04, -2.00, -0.04, -1.00, -0.04, 0.04, -2.04, -2.04, -2.01, 2.00, 1.01, -4.03, 4.00, -0.02, -3.02, 1.04, -4.01, -1.00, -1.04, 4.03, -2.00, 3.04, -2.00, 1.00, 1.01, 1.02, -2.04, 1.00, 2.03, 0.03, 1.02, 3.00, -3.03, 0.01, -0.04, -3.03, -1.00, 3.03, -2.03, 0.03, 2.02, -4.00, -0.00, 3.00, 2.02, -3.03, -2.04, -2.04, -3.01, 1.04, -2.01, -2.01, 0.03, 1.04, 4.03, 2.01, 0.01, 4.03, 0.03, -4.04, -4.03, -4.00, -0.03, -0.01, 4.00, -2.00, 2.00, 3.01, 0.01, -4.00, -2.02, 2.01, 1.03, -4.03, -1.04, -3.02, 2.01, 3.01, 0.01, -1.01, -1.03, -3.02, -4.04, 2.03, 1.02, 1.02, -0.01, -2.02, 4.02, -4.03, -1.01, 1.00, -3.01, -4.01, 4.02, 2.03, 2.01, -0.03, -4.04, 1.00, -3.02, -2.03, 0.03, -3.03, -1.04, -3.01, -2.00, -3.02, -1.01, -2.02, 0.02, -2.01, 4.02, -2.00, -3.01, 4.04, 3.01, 1.02, -2.03, -2.02, -2.02, 2.02, 4.01, 2.00, -3.03, -1.04, -4.03, 0.01, -0.03, -3.00, 4.00, -4.02, -0.01, 4.01, -2.04, 1.03, -3.02, -4.00, -2.00, 4.04, -0.03, 3.02, -1.02, -1.03, -2.01, -0.04, -0.02, 3.02, 0.04, -0.03, 2.00, 0.04, 4.02, -4.03, -0.02, -1.00, -4.00, -2.01, -3.01, 2.01, -4.03, 4.00, 0.02, -1.01, 1.04, 3.00, -0.01, -1.04, 4.04, -3.01, 1.03, 2.02, 1.04, -2.01, -1.04, -2.02, -4.04, -0.00, -0.01, -0.00, -1.01, 0.03, 2.02, 1.04, -4.00, -0.04, 2.03, -2.03, -1.00, -1.02, -3.03, -0.01, -1.03, -2.02, 3.03, -1.03, -3.00, -2.02, 1.00, 0.02, 0.00, 2.01, 0.02, -1.01, -4.02, -1.03, 0.01, -3.00, -3.02, 3.04, -3.04, 0.04, -4.04, -4.02, 1.01, -1.00, -2.02, -3.02, -3.00, -4.01, 2.04, 3.01, 4.01, 2.00, 2.02, 1.00, -3.04, -0.04, -0.03, 2.02, 0.02, -3.00, 4.01, -2.04, 4.03, 2.04, -0.04, -3.00, 0.00, -3.00, -2.00, -3.03, 0.00, 3.04, -3.03, -1.02, -1.02, -0.00, 1.03, 0.01, 2.01, -4.01, -0.01, 4.01, 4.04;
+ 2.02, -3.03, 2.01, -3.02, -2.03, -0.02, -1.01, 3.03, 1.04, -4.00, 2.04, -0.03, 1.00, 4.01, 2.03, -4.00, -2.04, 0.04, 2.00, -4.01, 0.04, -4.01, -1.04, 1.00, 0.02, 0.04, -3.03, -3.03, -1.02, -3.04, 0.04, 4.03, 3.01, 3.04, -0.02, -1.02, 1.02, -3.01, 3.04, 3.02, 2.04, 0.04, -2.02, -3.02, -1.03, 4.01, -1.02, 1.02, -2.00, 0.00, -2.03, -0.03, -2.00, 1.00, -1.04, -0.03, 1.02, -4.03, -1.02, -1.04, -1.03, -0.04, 3.01, 2.04, 2.02, -2.02, -3.03, 1.00, 1.01, -3.04, -3.02, 3.02, 4.02, -1.00, 0.02, 0.00, -1.00, -2.02, -3.00, 3.01, 3.04, 2.02, -4.02, -3.00, 4.02, 2.02, 2.00, -3.04, 4.04, -1.03, -0.01, 1.03, 1.00, 4.00, 2.04, 3.03, -2.01, 0.01, -2.01, 2.04, 0.01, -0.02, -4.01, 0.00, 0.03, -2.03, 1.00, 4.03, -2.02, 0.01, 0.04, -1.04, 1.00, 2.02, -4.02, -3.04, -0.00, 0.01, -3.04, 1.04, -0.01, 0.03, -0.01, 1.00, -0.00, 1.00, -3.02, -0.04, -4.02, 0.03, -3.00, -0.01, 3.01, -3.00, -3.00, 2.03, -0.01, 0.03, 0.02, -0.03, -2.03, -3.04, 4.04, -3.03, 2.03, -4.01, 2.01, 3.02, -2.04, 1.01, -4.03, 4.01, -0.02, 2.02, -4.02, 3.03, -3.00, 0.00, 0.00, -4.01, 4.02, 4.01, 3.01, 1.01, 0.00, 2.00, 0.04, -1.01, 0.01, -4.02, -0.03, -0.02, 3.00, -2.04, 2.04, -1.01, 3.01, -0.02, 2.04, -4.04, -1.04, -1.01, -0.01, 0.04, 0.03, 0.00, 0.00, 2.00, -4.04, -0.00, -0.02, 3.00, 1.00, 2.02, 1.02, -2.02, -3.00, -3.02, 2.03, 0.00, 0.00, -4.01, -4.04, 3.03, -4.00, 1.02, -4.00, -3.03, -0.00, -1.03, 4.03, -0.02, -3.03, 1.02, 1.03, -4.04, 1.04, 3.04, -4.04, -3.02, 0.04, -3.01, 0.04, 0.02, -1.04, 1.03, 1.04, 1.04, 3.03, 1.03, -4.04, 0.04, 3.04, 2.02, -2.03, 4.04, -0.00, -4.03, -3.02, -4.00, -4.02, 1.02, -1.03, 0.00, -3.02, -1.04, 3.04, 2.00, 4.04, -0.00, -4.04, 4.02, 3.03, 3.00, 1.00, 1.01;
+ 3.02, -1.04, 2.00, 4.00, -1.01, 1.00, -0.00, 2.01, -4.04, -2.02, -0.01, -3.04, 4.03, -4.02, -1.00, -2.01, -0.01, 3.00, 3.01, -4.04, -3.01, -4.01, -1.01, -1.00, 1.02, -3.01, 2.04, -1.04, 4.03, -2.04, 3.02, 4.01, -2.02, -0.00, -0.04, 3.02, -2.01, -4.02, -2.03, 2.03, -2.03, -4.03, -4.02, 3.03, 4.00, -2.03, 4.00, 2.02, -4.04, 0.03, 1.03, -2.02, 0.03, -1.01, -1.02, 0.04, -3.00, 2.02, 0.02, 4.04, -3.02, -1.04, 0.02, -0.00, 0.01, -3.03, 4.01, 2.00, 3.00, -3.02, 0.00, -4.03, -1.04, -2.01, -0.02, -1.02, 4.01, 2.00, 4.03, 1.03, 1.04, 4.03, 4.01, 2.03, 1.04, -2.02, -2.01, 4.00, -0.02, 0.03, 2.04, -1.01, 4.00, -1.04, 2.02, -1.00, -3.02, 2.01, 2.03, -1.00, -0.04, -3.01, -3.00, 2.04, -2.03, 1.04, -0.04, 2.02, -4.04, 4.00, -1.02, -0.02, 3.00, -0.03, 2.00, 3.04, -4.04, 2.01, -0.02, 2.01, -2.03, 1.00, 3.01, 0.01, -2.00, 3.00, 1.04, 4.01, -0.02, 4.01, 3.03, 4.01, 2.04, -3.00, -2.04, -2.04, -2.01, 4.02, 3.02, 0.04, -4.04, 2.00, 1.02, -3.03, 2.00, 3.04, 4.04, 0.00, 3.03, 1.01, 4.00, -0.04, 2.03, 3.01, -2.03, 4.01, 3.01, 3.01, 0.01, 4.03, 4.04, -3.04, 4.01, -0.02, -4.04, -3.00, 1.04, -3.02, -2.00, 1.04, 2.00, -2.03, -2.03, -2.00, -2.02, -4.00, 0.01, 2.01, 0.00, -4.01, -4.03, 3.03, 3.02, -2.00, 3.04, 3.03, -1.00, -2.02, 3.02, -1.02, -3.03, 1.03, -4.03, -2.01, 0.04, -1.00, -1.01, 0.00, -4.01, -4.02, 2.03, 3.04, -0.00, -4.02, -3.04, -3.00, 1.04, -4.04, -0.03, 1.04, 0.01, 3.02, 0.04, 3.00, 2.03, -3.03, -3.04, -2.00, -3.03, 0.04, -3.01, 3.04, 0.02, 3.00, -4.03, -0.03, -4.01, 1.00, -3.03, -2.00, 3.04, -0.04, 1.01, 3.04, -0.04, -2.01, -2.00, -1.02, 3.02, -2.04, -3.04, -3.02, -1.03, -2.04, 0.04, 3.02, 1.01, 3.00, 3.03, -2.02, -3.00, 0.00, 3.02, 2.01, 1.03, 4.03;
- bir — one, a
- bu — this
- ancak — but
- oldu — was (happened)
- şu — that
+cmake_minimum_required(VERSION 3.19)
+project(NVIDIA_SGEMM_PRACTICE LANGUAGES CXX CUDA)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-Misc.
+find_package(CUDA REQUIRED)
- The letter "j" is only used in loanwords.
- Words never begin with "ğ"
- Look for common word endings. Tense changes in Turkish verbs are created by adding suffixes to the end of the verb. Pluralizations occur by adding -lar and -ler.
- Common Tense Changes: -yor -mış -muş -sun
- Possessivity/person: -im -un -ın -in -iz -dur -tır
- Example: Yaptı , "[He] did it"; Yap is the verb stem meaning "to do", -mış indicates the perfect tense, -tır indicates the third person (he/she/it).
- Example: Adalar, "Islands"; Ada is a noun meaning "island", -lar makes it plural.)
- Example: Evimiz, "Our house"; Ev is a noun meaning "house", -im indicates the first-person possessor, which -iz then makes plural.)
+# ensure cuda is available
+include(CheckLanguage)
+check_language(CUDA)
-Azeri (Azərbaycanca)
+set(CMAKE_CXX_STANDARD 20)
+set(CUDA_COMPUTE_CAPABILITY 86)
-Azeri can be easily recognized by the frequent use of ə. This letter is not used in any other officially recognized modern Latin alphabet. In addition, it uses the letters x and q, which are not used in Turkish.
+# in debug mode, add debug symbols to device code
+# this disables most optimizations and kills performance
+add_compile_options("$<$,$>:-G;-src-in-ptx>")
+# add_compile_options("--ptxas-options=-v")
- Common words: və, ki, ilə, bu, o, isə, görə, da, də
- Frequent use of diacritics: ç, ğ, ı, İ, ö, ş, ü
- Words ending in -lar, -lər, -ın, -in, -da, -də, -dan, -dən
- Words never beginning with ğ or ı
- Words rarely beginning with two or more consonants
- Transliteration of foreign words and names, e.g. Audrey Hepburn = Odri Hepbern
+# Configure header file search paths
+include_directories(${CUDA_INCLUDE_DIRS})
+include_directories(${PROJECT_SOURCE_DIR}/src)
+# Configure the source file path to be compiled
+aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC)
-Chinese (中文)
+# generate executable
+add_executable(sgemm sgemm.cu ${SRC})
+set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
+target_link_libraries(sgemm ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES})
- No spaces, except between punctuation marks and (sometimes) foreign words.
- Arabic numerals (0-9) sometimes used
- Punctuation:
- Period 。(not .)
- Serial comma 、(distinguished from the regular comma ,)
- Ellipse …… (six dots)
- No hiragana, katakana, or hangul
- May be written vertically
+add_executable(cuBLAS_sgemm cuBLAS_sgemm.cu )
+set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
+target_link_libraries(cuBLAS_sgemm ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES})
-Simplified Chinese (简体) vs Traditional Chinese (繁體)
+add_executable(simplest_kernel simplest_kernel.cu)
+set_target_properties(sgemm PROPERTIES CUDA_ARCHITECTURES ${CUDA_COMPUTE_CAPABILITY})
+target_link_libraries(simplest_kernel ${CUDA_LIBRARIES})
-Note: Many characters were not simplified. As a result, it is common for a short word or phrase to be identical between Simplified and Traditional, but it is rare for an entire sentence to be identical as well.
+import gzip
+import random
+import tqdm
+import numpy as np
-Common radicals different between Traditional and Simplified:
+import torch
+from torch.optim import Adam
+from torch.nn import functional as F
+from torch.utils.data import DataLoader, Dataset
- Simplified: 讠钅饣纟门(e.g. 语 银 饭 纪 问)
- Traditional: 訁釒飠糹門(e.g. 語 銀 飯 紀 問)
+from simple_hierarchical_transformer import HierarchicalTransformer
-Common characters different between Traditional and Simplified:
+# constants
- Simplified: 国 会 这 来 对 开 关 门 时 个 书 长 万 边 东 车 爱 儿
- Traditional: 國 會 這 來 對 開 關 門 時 個 書 長 萬 邊 東 車 愛 兒
+NUM_BATCHES = int(1e5)
+BATCH_SIZE = 2
+GRADIENT_ACCUMULATE_EVERY = 8
+LEARNING_RATE = 1e-4
+VALIDATE_EVERY = 100
+PRIME_LENGTH = 128
+GENERATE_EVERY = 500
+SEQ_LEN = 8192
+GENERATE_LENGTH = 1024
-Standard written Chinese (based on Mandarin) vs written Vernacular Cantonese
-See also: zh:粵語
+# helpers
-Note: Apart from Hong Kong, there are also Cantonese-speakers in southern Mainland China, Malaysia and Singapore[1], so written Cantonese can be written in either Simplified or Traditional characters.
+def cycle(loader):
+ while True:
+ for data in loader:
+ yield data
+def decode_token(token):
+ return str(chr(max(32, token)))
-Common characters in Vernacular Cantonese that do not occur or seldom occur in Mandarin:
+def decode_tokens(tokens):
+ return "".join(list(map(decode_token, tokens)))
- 嘅 咗 咁 嚟 啲 唔 佢 乜 嘢 嗰 冇 睇
+# instantiate transformer
-Some of the above characters are not supported in all character encodings, so sometimes the 口 radical on the left is substituted with a 0 or o, e.g.
+model = HierarchicalTransformer(
+ num_tokens = 256,
+ dim = 1024,
+ depth = 8,
+ seq_len = SEQ_LEN,
+ use_flash_attn = True,
+ compress_factor = 32
+).cuda()
- o既 0既
+# prepare enwik8 data
+with gzip.open("./data/enwik8.gz") as file:
+ data = np.frombuffer(file.read(int(95e6)), dtype=np.uint8).copy()
+ np_train, np_valid = np.split(data, [int(90e6)])
+ data_train, data_val = torch.from_numpy(np_train), torch.from_numpy(np_valid)
-Sometimes, different Chinese characters are used to express the same meaning in Cantonese and Mandarin. If you use the one commonly used in Cantonese to express the same meaning when you are speaking or writing Mandarin, a native speaker may be confused or even find it difficult to understand, and vice versa. Some examples are: (Cantonese vs Mandarin)
+class TextSamplerDataset(Dataset):
+ def __init__(self, data, seq_len):
+ super().__init__()
+ self.data = data
+ self.seq_len = seq_len
- 食vs吃(eat) 飲vs喝(drink) 企vs站(stand) 凍vs冷(cold) 落vs下(down) 著vs穿(wear) 讀vs唸(read) 鬧vs罵(scold) 計vs算(calculate) 咪vs別(do not) 行vs走(walk/go) 先vs才(then)
+ def __getitem__(self, index):
+ rand_start = torch.randint(0, self.data.size(0) - self.seq_len, (1,))
+ full_seq = self.data[rand_start : rand_start + self.seq_len + 1].long()
+ return full_seq.cuda()
+ def __len__(self):
+ return self.data.size(0) // self.seq_len
-There are Chinese words used to construct vocabularies used in Cantonese that are not or seldomly implemented in modern Mandarin. Some examples are: (Cantonese vs Mandarin)
+train_dataset = TextSamplerDataset(data_train, SEQ_LEN)
+val_dataset = TextSamplerDataset(data_val, SEQ_LEN)
+train_loader = cycle(DataLoader(train_dataset, batch_size=BATCH_SIZE))
+val_loader = cycle(DataLoader(val_dataset, batch_size=BATCH_SIZE))
- 成日vs整天(always) 傾計vs聊天(talk) 返工vs上班(go to work) 溫書vs溫習(study) 影片vs視頻(video) 隔離vs旁邊(nearby) 起屋vs蓋樓(build a house) 聽日vs明天(tomorrow) 巴閉vs囂張(arrogant) 搞掂vs完成(finished) 定係vs還是(or) 靚仔vs帥哥(handsome male) 鍾意vs喜歡(like) 犀利vs厲害(powerful) 同埋vs和/及(and) 黐綫vs瘋的(crazy) 雪櫃vs冰箱(fridge)
+# optimizer
+optim = Adam(model.parameters(), lr = LEARNING_RATE)
-Cantonese vocabularies constructed by Cantonese words are used in daily life in southern China and are not used in modern Mandarin. Some examples are:
+# training
- 咪咁(don't be like this) 好冇(ok?) 玩嘢(to play tricks) 做嘢(to work) 睇戲(to watch a film/movie) 唔知(don't know) 埋嚟(come) 嗰個(that) 咁嘅嘢(such thing) 佢哋(they) 咩事/乜事(what?) 冇嘢(nothing) 嗰陣(at that moment) 越嚟越多(more and more) 我嘅(mine) 梗係(of course) 𥄫(to peek) 冧佢(love him/her) 拎畀我(take it to me) 嘥曬(everything is wasted) 你啱(you are right) 𢫏住(to cover something) 冚唪唥(all) 撳實(to press something tightly) 瞓覺(to sleep) 掟石仔(to throw a tiny stone) 唓[a modal word to express comtemption] 噃[a modal word for reminding or warning someone] 詏交(to argue) 好嬲(very angry) 心悒(feeling depressed in heart) 𧨾女仔(to please a girl) 得咁多咋(only this much) 做好咗(done something well)
+for i in tqdm.tqdm(range(NUM_BATCHES), mininterval = 10.0, desc = "training"):
+ model.train()
+ for _ in range(GRADIENT_ACCUMULATE_EVERY):
+ loss, (ce_loss, recon_loss) = model(next(train_loader), return_loss = True)
+ loss.backward(loss / GRADIENT_ACCUMULATE_EVERY)
-Finally, when terms are introduced from other countries(especially the US and the UK) to China, Cantonese and Mandarin often get different translations, where Cantonese often translates according to pronunciation of the terms in English and Mandarin often translates according to the meaning of the terms. Some examples are: (Cantonese vs Mandarin)
+ print(f"training loss: {ce_loss.item()}")
+ torch.nn.utils.clip_grad_norm_(model.parameters(), 0.5)
- 的士(dik1 si2, has no direct meaning, translated according to the English pronunciation.) vs 出租車(chū zū chē, meaning cars for renting.), translated from Taxi.
- 巴士(baa1 si2, has no direct meaning, translated according to the English pronunciation.) vs 公車(gōng chē, meaning public cars.), translated from Bus.
- 多士(do1 si2, has no direct meaning, translated according to the English pronunciation.) vs 土司(tǔ sī, has no direct meaning, translated according to the English pronunciation.), translated from Toast.
- 騷(sou1, has no direct meaning, translated according to the English pronunciation.) vs 秀(xìu, has no direct meaning, translated according to the English pronunciation), translated from Show.
- 士多(si2 do1, has no direct meaning, translated according to the English pronunciation) vs 小店(xiǎo diàn, meaning small shop), translated from Store.
- 𨋢(lip1, has no direct meaning, translated according to the English pronunciation) vs 升降機(shēng jiàng jī, meaning machine that elevates and lowers itself), translated from Lift/Elevator.
- 掰拜(baai1 baai3, has no direct meaning, translated according to the English pronunciation) vs 再見(zài jiàn, meaning see you again), translated from Byebye/Goodbye.
+ optim.step()
+ optim.zero_grad()
-Japanese (日本語)
+ if i % VALIDATE_EVERY == 0:
+ model.eval()
+ with torch.no_grad():
+ loss, (ce_loss, recon_loss) = model(next(val_loader), return_loss = True)
+ print(f"validation loss: {ce_loss.item()}")
- Katakana (カタカナ) and hiragana (ひらがな) characters mixed with kanji (漢字)
- No spaces
- Number system = Arabic Numerals (1,2,3 etc.)
- Punctuation:
- Period 。
- Comma 、(,also used in double byte)
- Quotation marks 「」
- Occasional small characters beside large ones, eg. しゃ りゅ しょ って シャ リュ ショ ッテ
- Double tick marks (known as daku-on) appearing at upper right of characters, eg. で が ず デ ガ ズ
- Empty circles (known as handaku-on) appearing at upper right of characters, eg. ぱ ぴ パ ぴ
- Frequent characters: の を は が
- Originally written vertically(books, school, etc.) but mostly appears horizontal online.
+ if i % GENERATE_EVERY == 0:
+ model.eval()
+ inp = random.choice(val_dataset)[:PRIME_LENGTH]
+ prime = decode_tokens(inp)
+ print(f"%s \n\n %s", (prime, "*" * 100))
-Korean (한국어/조선말)
+ sample = model.generate(inp[None, ...], GENERATE_LENGTH)
+ output_str = decode_tokens(sample[0])
+ print(output_str, "\n")
- Western-style punctuation marks
- Western-style spacing
- Hangul letters(phonetic) ex: ㅂ(b in book) ㅈ(j in jump) ㅅ(s in sock)ㅊ(ch in champion) ㅍ(p in pox)
- Hangul letters used to form syllable blocks; e.g. ㅅ s + ㅓ o + ㅇ ng = 성 song
- Circles and ellipses are commonplace in Hangul; are exceedingly rare in Chinese.
- General appearance has relatively-uniform complexity, as contrasted with Chinese or Japanese.
-Khmer language ភាសារខ្មែរ
+{
+ "version": "1.0",
+ "truncation": null,
+ "padding": null,
+ "added_tokens": [
+ {
+ "id": 0,
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": true,
+ "special": true
+ },
+ {
+ "id": 1,
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": true,
+ "special": true
+ },
+ {
+ "id": 2,
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": true,
+ "special": true
+ }
+ ],
+ "normalizer": {
+ "type": "Sequence",
+ "normalizers": [
+ {
+ "type": "Prepend",
+ "prepend": "▁"
+ },
+ {
+ "type": "Replace",
+ "pattern": {
+ "String": " "
+ },
+ "content": "▁"
+ }
+ ]
+ },
+ "pre_tokenizer": null,
+ "post_processor": {
+ "type": "TemplateProcessing",
+ "single": [
+ {
+ "SpecialToken": {
+ "id": "",
+ "type_id": 0
+ }
+ },
+ {
+ "Sequence": {
+ "id": "A",
+ "type_id": 0
+ }
+ }
+ ],
+ "pair": [
+ {
+ "SpecialToken": {
+ "id": "",
+ "type_id": 0
+ }
+ },
+ {
+ "Sequence": {
+ "id": "A",
+ "type_id": 0
+ }
+ },
+ {
+ "SpecialToken": {
+ "id": "",
+ "type_id": 1
+ }
+ },
+ {
+ "Sequence": {
+ "id": "B",
+ "type_id": 1
+ }
+ }
+ ],
+ "special_tokens": {
+ "": {
+ "id": "",
+ "ids": [
+ 1
+ ],
+ "tokens": [
+ ""
+ ]
+ }
+ }
+ },
+ "decoder": {
+ "type": "Sequence",
+ "decoders": [
+ {
+ "type": "Replace",
+ "pattern": {
+ "String": "▁"
+ },
+ "content": " "
+ },
+ {
+ "type": "ByteFallback"
+ },
+ {
+ "type": "Fuse"
+ },
+ {
+ "type": "Strip",
+ "content": " ",
+ "start": 1,
+ "stop": 0
+ }
+ ]
+ }
+}
-Khmer is written using the distinctive Khmer alphabet.
+#include "q_gemm.cuh"
+#include "util.cuh"
+#include "matrix_view.cuh"
+#include "../config.h"
+
+// #include
+// #include
+
+#define BLOCK_KN_SIZE 512
+#define MAX_GROUPS_IN_BLOCK (BLOCK_KN_SIZE / 32)
+#define MAX_COUNT_M 2
+#define CLEAR_N_SIZE 256
+//#define DEBUG
+
+#include "q_gemm_dq.cuh"
+
+typedef void (*fp_gemm_half_q_half_kernel)
+(
+ const half*,
+ const uint32_t*,
+ const uint32_t*,
+ const half*,
+ const uint16_t*,
+ half*,
+ const int,
+ const int,
+ const int,
+ const int,
+ const int,
+ const uint16_t*,
+ const int,
+ const int,
+ const int,
+ const int,
+ const int,
+ const int
+);
+
+template
+__global__ void gemm_half_q_half_kernel
+(
+ const half* a,
+ const uint32_t* b_q_weight,
+ const uint32_t* b_q_scale,
+ const half* b_q_scale_max,
+ const uint16_t* b_q_groups,
+ half* c,
+ const int size_m,
+ const int size_n,
+ const int size_k,
+ const int groups,
+ const int groupsize,
+ const uint16_t* __restrict__ b_q_perm,
+ const int rows_8,
+ const int rows_6,
+ const int rows_5,
+ const int rows_4,
+ const int rows_3,
+ const int rows_2
+)
+{
+ MatrixView_half a_(a, size_m, size_k);
+ MatrixView_half_rw c_(c, size_m, size_n);
+ MatrixView_q4_row b_q_scale_(b_q_scale, groups, size_n);
- rarely uses spaces
- Letters have a distinctively "taller" shape than other Brahmic scripts.
- Uses Khmer numerals in writing ១ ២ ៣ ៤ ៥ ៦ ៧ ៨ ៩.
- Has smaller version of consonants placed below main consonants that may appear clustered
- Has 24 diacritics denoting syllable rhymes - ា ិ ី ឹ ឺ ុ ូ ួ ើ ឿ ៀ េ ែ ៃ េា ៅ ុំ ំ ាំ ះ ុះ េះ ោះ
- Uses this as a full stop: ។
+ int t = threadIdx.x;
-Greek (Ελληνικά)
+ // Block
-Modern Greek is written with Greek alphabet in monotonic, polytonic or atonic, either according to Demotic (Mr. Triantafilidis) grammar or Katharevousa grammar. Some people write in Greeklish (Greek with Latin script) which is either Visual-based, orthographic or phonetic or just messed-up (mixed). The only official orthographic forms of Greek language are Monotonic and Polytonic.
-Normal Modern Greek (Greek Monotonic)
+ int offset_n = blockIdx.x * BLOCK_KN_SIZE;
+ int offset_m = blockIdx.y * m_count;
+ int offset_k = blockIdx.z * BLOCK_KN_SIZE;
- words και, είναι;
- Each multi-syllable word has one accent/tone mark (oxia): ά έ ή ί ό ύ ώ
- The only other diacritic ever used is the tréma: ϊ/ΐ, ϋ/ΰ, etc.
+ int end_n = min(offset_n + BLOCK_KN_SIZE, size_n);
+ int end_m = min(offset_m + m_count, size_m);
+ int end_k = min(offset_k + BLOCK_KN_SIZE, size_k);
+ int n = offset_n + t;
-Pre-1980s Greek (Greek Polytonic)
+ // Preload block_a
-Katharevousa, Dimotiki (Triantafylidis' grammar)
+ __shared__ half block_a[m_count][BLOCK_KN_SIZE];
- Diacritics: ά, ᾶ, ἀ, ἁ, and combinations, also with other vowels.
- Some texts, especially in Katharevousa, also have ὰ, ᾳ, in combination with other diacritics.
+ if (offset_k + t < end_k)
+ {
+ for (int m = 0; m < m_count; ++m)
+ {
+ const half* a_ptr = a_.item_ptr(offset_m + m, 0);
+ half* block_a_ptr = block_a[m];
+ half a0 = a_ptr[b_q_perm[offset_k + t]];
+ block_a_ptr[t] = a0;
+ }
+ }
-Ancient Greek
+ __syncthreads();
- Diacritics: ά, ὰ, ᾶ, ἀ, ἁ, ᾳ, and combinations, also with other vowels; ῥ; tilde (ᾶ) often appears more like a rounded circumflex
- some texts feature lunate sigma (looks like c) instead of σ/ς
+ if (n >= size_n) return;
-Greek Atonic
+// for (int xs_n = 0; xs_n < size_n - BLOCK_KN_SIZE;
- Was common in some Greek media (television);
- You will see Greek characters without accents/tones;
- words: και, ειναι, αυτο.
+ // Advance to subblock
-Greek in Greeklish
+// int sub_offset_k = SUBBLOCK_K_SIZE * threadIdx.y;
+// offset_k += sub_offset_k;
+// end_k = min(offset_k + SUBBLOCK_K_SIZE, size_k);
- Automated conversion software for Greeklish->Greek conversion exists. If you notice a Greeklish text it may be useful for the Greek el.wikipedia (after conversion).
- Keep in mind: in Greeklish more than one character may be used for one letter. (example: th for Θ (theta)).
+// if (threadIdx.y > 0) return;
+// int sub_offset_k = 0;
-Orthographic Greeklish
+ // Find initial group
- words kai, einai.
+ int group = offset_k / groupsize;
-Phonetic Greeklish
+ // Preload scales
- words ke, ine;
- omega appears as o;
- ei, oi appear as i;
- ai appears as e.
+ half scales[MAX_GROUPS_IN_BLOCK];
-Visual-based Greeklish
+ int groups_in_block = DIVIDE((end_k - offset_k), groupsize);
+ for (int g = 0; g < groups_in_block; g++)
+ {
+ half s = dq_scale(b_q_scale_.item(group + g, n), b_q_scale_max[group + g]);
+ scales[g] = s;
+ }
- omega (Ω or ω) may appear as W or w;
- epsilon (E) may appear as 3;
- alpha (A) may appear as 4;
- theta (Θ) may appear as 8;
- upsilon (Y) may appear as \|/;
- gamma (γ) may appear as y
- More than one character may be used for one letter.
+ // Find initial q row
-Messed-up (Mixed) Greeklish
+ int pre_rows_8 = min(rows_8, offset_k);
+ int pre_rows_6 = offset_k > rows_8 ? min(rows_6, offset_k) - rows_8 : 0;
+ int pre_rows_5 = offset_k > rows_6 ? min(rows_5, offset_k) - rows_6 : 0;
+ int pre_rows_4 = offset_k > rows_5 ? min(rows_4, offset_k) - rows_5 : 0;
+ int pre_rows_3 = offset_k > rows_4 ? min(rows_3, offset_k) - rows_4 : 0;
+ int pre_rows_2 = offset_k > rows_3 ? min(rows_2, offset_k) - rows_3 : 0;
+ int qk = 0;
+ qk += pre_rows_8 / 32 * 8;
+ qk += pre_rows_6 / 32 * 6;
+ qk += pre_rows_5 / 32 * 5;
+ qk += pre_rows_4 / 32 * 4;
+ qk += pre_rows_3 / 32 * 3;
+ qk += pre_rows_2 / 32 * 2;
- words kai, eine;
- combines principles of phonetic, visual-based and orthographic Greeklish according to writer's idiosyncrasy;
- The most commonly used form of Greeklish.
+ const uint32_t* b_ptr = b_q_weight + qk * size_n + n;
+ const half* a_ptr = &block_a[0][0];
+ int a_stride = BLOCK_KN_SIZE;
+// const half* a_ptr = a_.item_ptr(offset_m, 0);
+// int a_stride = size_k;
-Armenian (Հայերեն)
+ half qs_h = scales[0];
+ int scales_idx = 0;
+ int nextgroup = offset_k + groupsize;
-Armenian can be recognized by its unique 39-letter alphabet:
+ // Column result
-Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք ԵՎ(և) Օ Ֆ
-Georgian (ქართული)
+ half2 block_c[m_count] = {};
-Georgian can be recognised by its unique alphabet (note some characters have fallen out of use).
+ // Dot product over groups
-ა ბ გ დ ე ვ ზ ჱ თ ი კ ლ მ ნ ჲ ო პ ჟ რ ს ტ ჳ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჴ ჯ ჰ ჵ ჶ ჷ ჸ
-Cyrillic alphabet
+ int k = offset_k;
-Bolding denotes letters unique to the language
-Slavic languages
-Belarusian (беларуская)
+ while (k < rows_8 && k < end_k)
+ {
+ int end_k_sg = min(min(k + 128, rows_6), end_k);
+ uint32_t q_0[8], q_1[8];
+ load_8(b_ptr, size_n, q_0);
+ qdot_8bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_8bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_8bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_8bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
- uses: ё, і, й, ў, ы, э, ’
- features: шч used instead of щ
- the only Cyrillic language not to feature и.
+ while (k < rows_6 && k < end_k)
+ {
+ int end_k_sg = min(min(k + 128, rows_5), end_k);
+ uint32_t q_0[6], q_1[6];
+ load_6(b_ptr, size_n, q_0);
+ qdot_6bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_6bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_6bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_6bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
-Bulgarian (български)
+ while (k < rows_5 && k < end_k)
+ {
+ int end_k_sg = min(min(k + 128, rows_4), end_k);
+ uint32_t q_0[5], q_1[5];
+ load_5(b_ptr, size_n, q_0);
+ qdot_5bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_5bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_5bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_5bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
- uses: ъ, щ, я, ю, й
- words: със, в
- features: many words end in definite article –ът, –ят, –та, –то, –те
+// while (k + 128 < rows_4 && k + 128 < end_k)
+// {
+// uint32_t q_0[8], q_1[8];
+// load_8(b_ptr, size_n, q_0);
+// load_8(b_ptr, size_n, q_1);
+// qdot_4bit_64(k, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0);
+// qdot_4bit_64(k, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1);
+// }
-Macedonian (македонски)
+ while (k < rows_4 && k < end_k)
+ {
+ int end_k_sg = min(min(k + 128, rows_3), end_k);
+ uint32_t q_0[4], q_1[4];
+ load_4(b_ptr, size_n, q_0);
+ qdot_4bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_4bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_4bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_4bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
- uses: ј, љ, њ, џ, ѓ, ќ, ѕ
- words: во, со
- features: р is usually found between consonants, for example првин
+// while (k + 128 < rows_3 && k + 128 < end_k)
+// {
+// uint32_t q_0[6], q_1[6];
+// load_6(b_ptr, size_n, q_0);
+// load_6(b_ptr, size_n, q_1);
+// qdot_3bit_64(k, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0);
+// qdot_3bit_64(k, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1);
+// }
-Russian (русский)
+ while (k < rows_3 && k < end_k)
+ {
+ int end_k_sg = min(min(k + 128, rows_2), end_k);
+ uint32_t q_0[3], q_1[3];
+ load_3(b_ptr, size_n, q_0);
+ qdot_3bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_3bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_3bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_3bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
- uses: ё, й, ъ (rarely), ы, э, щ
+// while (k + 128 < rows_2 && k + 128 < end_k)
+// {
+// uint32_t q_0[8];
+// load_8(b_ptr, size_n, q_0);
+// qdot_2bit_128(k, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0);
+// }
-Serbian (српски)
+ while (k < rows_2 && k < end_k)
+ {
+ int end_k_sg = min(k + 128, end_k);
+ uint32_t q_0[2], q_1[2];
+ load_2(b_ptr, size_n, q_0);
+ qdot_2bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_2bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ qdot_2bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_0, q_1);
+ qdot_2bit_32(k, end_k_sg, group, nextgroup, groupsize, n, scales, scales_idx, qs_h, block_c, a_ptr, a_stride, b_ptr, size_n, q_1, q_0);
+ }
- uses: ј, љ, њ, џ, ђ, ћ
- does not use: ъ, щ, я, ю, й
- words: је, у
- features: large consonant clusters, for example српски
+ // Accumulate column sums in c
-Ukrainian (українська)
+ for (int m = 0; m < m_count; m++) atomicAdd(c_.item_ptr(offset_m + m, n), __hadd(block_c[m].x, block_c[m].y));
+ //for (int m = 0; m < m_count; m++) c_.set(offset_m + m, n, block_c[m]);
+}
- uses: є, и, і, ї, й, ґ, є щ, ’
- does not use: ъ, ё, ы, э
+fp_gemm_half_q_half_kernel pick_gemm_half_q_half_kernel(bool first_block, const int m_count)
+{
+ if (m_count == 1) return gemm_half_q_half_kernel;
+ if (m_count == 2) return gemm_half_q_half_kernel;
+// if (m_count == 3) return gemm_half_q_half_kernel;
+// if (m_count == 4) return gemm_half_q_half_kernel;
+// if (m_count == 5) return gemm_half_q_half_kernel;
+// if (m_count == 6) return gemm_half_q_half_kernel;
+// if (m_count == 7) return gemm_half_q_half_kernel;
+// if (m_count == 8) return gemm_half_q_half_kernel;
+ return NULL;
+}
-Mongolian
+void gemm_half_q_half_cuda_part
+(
+ const half* a,
+ QMatrix* b,
+ half* c,
+ int size_m,
+ int size_n,
+ int size_k,
+ int count_m
+)
+{
+ dim3 blockDim, gridDim;
+ blockDim.x = BLOCK_KN_SIZE;
+ blockDim.y = 1;
+ blockDim.z = 1;
+ gridDim.x = DIVIDE(size_n, BLOCK_KN_SIZE);
+ gridDim.y = DIVIDE(size_m, count_m);
+ gridDim.z = DIVIDE(size_k, BLOCK_KN_SIZE);
+
+ fp_gemm_half_q_half_kernel kernel = pick_gemm_half_q_half_kernel(true, count_m);
+
+ kernel<<>>
+ (
+ a,
+ b->cuda_q_weight,
+ b->cuda_q_scale,
+ b->cuda_q_scale_max,
+ b->cuda_q_groups,
+ c,
+ size_m,
+ size_n,
+ size_k,
+ b->groups,
+ b->groupsize,
+ b->cuda_q_perm,
+ b->rows_8,
+ b->rows_6,
+ b->rows_5,
+ b->rows_4,
+ b->rows_3,
+ b->rows_2
+ );
+}
- uses: ө, ү
- does not use: ё, й, к, щ, ъ, ы, ь, ю, я
- used only in names or borrowed words: в, е, з, ф, ц
+void gemm_half_q_half_cuda
+(
+ cublasHandle_t cublas_handle,
+ const half* a,
+ QMatrix* b,
+ half* c,
+ int size_m,
+ int size_n,
+ int size_k,
+ bool clear,
+ half* temp_dq
+)
+{
+ if (size_m >= MAX_Q_GEMM_ROWS)
+ {
+ // Reconstruct FP16 matrix, then cuBLAS
+
+ //DBGI3(size_m, size_n, size_k);
+
+ if (!temp_dq) temp_dq = b->temp_dq;
+ b->reconstruct(temp_dq);
+
+ cublasSetMathMode(cublas_handle, CUBLAS_TENSOR_OP_MATH);
+
+ //DBGI3(size_m, size_n, size_k);
+
+ const half alpha = __float2half(1.0f);
+ const half beta = clear ? __float2half(0.0f) : __float2half(1.0f);
+ cublasHgemm(cublas_handle,
+ CUBLAS_OP_N,
+ CUBLAS_OP_N,
+ size_n,
+ size_m,
+ size_k,
+ &alpha,
+ temp_dq,
+ size_n,
+ a,
+ size_k,
+ &beta,
+ c,
+ size_n);
+
+// const float alpha = 1.0f;
+// const float beta = clear ? 0.0f : 1.0f;
+// cublasSgemmEx(cublas_handle,
+// CUBLAS_OP_N,
+// CUBLAS_OP_N,
+// size_n,
+// size_m,
+// size_k,
+// &alpha,
+// temp_dq,
+// CUDA_R_16F,
+// size_n,
+// a,
+// CUDA_R_16F,
+// size_k,
+// &beta,
+// c,
+// CUDA_R_16F,
+// size_n);
+ }
+ else
+ {
+ // Quantized matmul
-Montenegrin
+ if (clear) clear_tensor_cuda(c, size_m, size_n);
- uses: З́, С́
+ int max_chunks = size_m / MAX_COUNT_M;
+ int last_chunk = max_chunks * MAX_COUNT_M;
+ int last_chunk_size = size_m - last_chunk;
-Ossetian
+ // DBGI3(size_m, size_n, size_k);
+ // DBGI3(max_chunks, last_chunk, last_chunk_size);
- uses: ӕ
+ if (max_chunks)
+ gemm_half_q_half_cuda_part(a, b, c, last_chunk, size_n, size_k, MAX_COUNT_M);
-Arabic alphabet
+ if (last_chunk_size)
+ gemm_half_q_half_cuda_part(a + last_chunk * size_k, b, c + last_chunk * size_n, last_chunk_size, size_n, size_k, last_chunk_size);
+ }
+}
- All languages using the Arabic alphabet are written right-to-left.
- A number of other languages have been written in the Arabic alphabet in the past, but now are more commonly written in Latin characters; examples include Turkish, Somali and Swahili.
+__global__ void clear_kernel
+(
+ half* __restrict__ c,
+ const int size_m,
+ const int size_n
+)
+{
+ int m = blockIdx.y;
+ int n = (blockIdx.x * CLEAR_N_SIZE + threadIdx.x) * 8;
+ if (n >= size_n) return;
+ int4* c_ptr = (int4*)(c + m * size_n + n);
+ *c_ptr = {};
+}
-Arabic (العربية)
+void clear_tensor_cuda
+(
+ half* c,
+ int size_m,
+ int size_n
+)
+{
+ dim3 blockDim, gridDim;
+ blockDim.x = CLEAR_N_SIZE;
+ blockDim.y = 1;
+ gridDim.x = DIVIDE(size_n / 8, CLEAR_N_SIZE);
+ gridDim.y = size_m;
+ clear_kernel<<>>(c, size_m, size_n);
+}
- backwards question mark: ؟
- short vowels are not written, so many words are written with no vowel at all
- common prefix: -الـ
- common suffix: ـة-
- words: إلى، من، على
+#!/usr/bin/env python3
+import argparse
+
+import torch
+import torch.nn as nn
+from datasets import load_dataset
+from gptq_triton import load_quant
+from tqdm import tqdm
+from transformers import AutoTokenizer, LlamaForCausalLM
-Persian (فارسی)
-Except in very rare case, verbs are at the end of a phrase.
+parser = argparse.ArgumentParser()
+
+parser.add_argument('--model', type=str, help='Path to model, either a HuggingFace model or a quantized model')
+parser.add_argument('--quant', action='store_true', help='Whether the model is quantized')
+parser.add_argument('--stride', type=int, default=512, help='Stride for calculating perplexity')
+parser.add_argument('--context-length', type=int, default=2048, help='Length of context to use')
+
+
+def main():
+ args = parser.parse_args()
- common verbs: کرد، بود، شد، است، میشود
- uses: پ، چ، ژ، گ
- words: که، به
+ if not args.quant:
+ model = get_llama(args.model)
+ model.eval()
+ model.to('cuda')
+ else:
+ model = load_quant(args.model)
+ model.eval()
+ model.to('cuda')
-Urdu (اردو)
+ # NOTE: Setting use_fast=False for now, as the alternative was an order of magnitude slower on a recent `transformers` commit
+ tokenizer = AutoTokenizer.from_pretrained(args.model, use_fast=False)
+ context_length = model.seqlen if args.context_length is None else args.context_length
- uses: ٹ، ڈ، ڑ، ں، ے
- many words ending in ے
- words: اور، ہے
- to distinguish from Arabic: in many texts, Urdu is written stylistically with words ‘slanting’ downwards from top-right to bottom-left (unlike the ‘linear’ style of Arabic, Persian etc.).
+ for dataset in ['wikitext-2', 'ptb', 'c4']:
+ ppl = calculate_perplexity(model, tokenizer, dataset, max_length=context_length, stride=args.stride)
+ print(f"{dataset} perplexity: {ppl}")
+
+
+def get_llama(model: str):
+ """
+ Load a pretrained Llama model
+ """
+ def skip(*args, **kwargs):
+ pass
+ # NOTE: This is a nasty hack, but it speeds up model building by a huge amount
+ old_inits = (torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_)
+ torch.nn.init.kaiming_uniform_ = skip
+ torch.nn.init.uniform_ = skip
+ torch.nn.init.normal_ = skip
+
+ model = LlamaForCausalLM.from_pretrained(model, torch_dtype='auto')
+ model.seqlen = 2048
+
+ # Restore the old initializers
+ torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_ = old_inits
+
+ return model
+
+
+def get_dataset(dataset_name: str, tokenizer) -> torch.Tensor:
+ if dataset_name == "wikitext-2":
+ test = load_dataset("wikitext", "wikitext-2-raw-v1", split="test")
+ encodings = tokenizer("\n\n".join(test["text"]), return_tensors="pt").input_ids
+ elif dataset_name == 'ptb':
+ test = load_dataset("ptb_text_only", 'penn_treebank', split="validation")
+ encodings = tokenizer("\n\n".join(test["sentence"]), return_tensors="pt").input_ids
+ elif dataset_name == 'c4':
+ # WARNING: Many of the files in the allenai/c4 repo are marked as "Unsafe" by HuggingFace, possibly containing a virus. This particular file is not, and I doubt it's an issue, but worth noting.
+ test = load_dataset('allenai/c4', 'allenai--c4', data_files={'validation': 'en/c4-validation.00000-of-00008.json.gz'}, split='validation')
+ encodings = [tokenizer(x, return_tensors="pt").input_ids for x in test['text'][:1000]]
+ encodings = torch.cat(encodings, dim=1)
+ else:
+ raise ValueError(f"Unknown dataset {dataset_name}")
+
+ return encodings
+
+
+def calculate_perplexity(model, tokenizer, dataset: str, max_length: int, stride: int = 512) -> float:
+ print("Loading dataset...")
+ encodings = get_dataset(dataset, tokenizer)
+ seq_len = encodings.size(1)
+
+ print("Calculating perplexity...")
+ print(f"Sequence length: {seq_len}")
+ print(f"Max length: {max_length}")
+ print(f"Stride: {stride}")
+
+ nlls = []
+ prev_end_loc = 0
+
+ for begin_loc in (pbar := tqdm(range(0, seq_len - 1, stride))):
+ end_loc = min(seq_len - 1, begin_loc + max_length)
+ trg_len = end_loc - prev_end_loc # How many tokens we want to predict
+ input_ids = encodings[:, begin_loc:end_loc+1].to('cuda') # +1 for the labels
+
+ with torch.no_grad():
+ # Ask the model for logits
+ # NOTE: Instead of calling HF's model wrapper, we call the model directly to hopefully cut down on some memory overhead
+ outputs = model.model(input_ids[:, :-1], use_cache=False)
+ logits = model.lm_head(outputs[0][..., -trg_len:, :])
+
+ # The last trg_len tokens are the labels
+ labels = input_ids[:, -trg_len:].contiguous()
+
+ # Compute the NLL for this batch using flattened logits and labels
+ loss_fct = nn.CrossEntropyLoss()
+ loss = loss_fct(logits.view(-1, logits.size(-1)), labels.view(-1))
-Syriac Alphabet
-Syriac (ܐܬܘܪܝܐ)
+ nlls.append(loss.to('cpu').to(torch.float32))
+ ppl = torch.exp(torch.stack(nlls).mean())
+ pbar.set_description(f"Perplexity: {ppl:.2f}")
+
+ prev_end_loc = end_loc
+ if end_loc == (seq_len - 1):
+ break
+
+ ppl = torch.exp(torch.stack(nlls).mean())
+
+ return ppl
+
+
+if __name__ == '__main__':
+ main()
+
+
+[metadata]
+name = gptq_triton
+version = 0.0.3
+author = fpgaminer
+author_email = fpgaminer@bitcoin-mining.com
+description = Fast GPTQ kernels written in Triton
+long_description = file: README.md
+long_description_content_type = text/markdown; charset=UTF-8
+url = https://github.com/fpgaminer/GPTQ-triton
+keywords = gptq, triton, torch, cuda, gpu, quantization, quantize, quantized, inference, deep learning, machine learning
+license = Apache License 2.0
+license_file = LICENSE
+classifiers =
+ Development Status :: 3 - Alpha
+ License :: OSI Approved :: Apache Software License
+ Intended Audience :: Developers
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Topic :: Scientific/Engineering :: Artificial Intelligence
+ Topic :: Software Development :: Libraries :: Python Modules
- short vowels are not usually written so many words are written with no vowel at all
- three styles of writing (estrangela, serto, mahdnaya) and two different ways of representing vowels
- basic alphabet in Estrangela style is: ܐ ܒ ܓ ܕ ܗ ܘ ܙ ܚ ܛ ܝ ܟ ܠ ܡ ܢ ܣ ܥ ܦ ܨ ܩ ܪ ܣ ܬ
- basic alphabet in Serto style is: ܬ, ܫ, ܪ, ܩ, ܨ, ܦ, ܥ, ܣ, ܢ, ܡ, ܠ, ܟ, ܝ, ܛ, ܚ, ܙ, ܘ, ܗ, ܕ, ܓ, ܒ, ܐ
- basic alphabet in Madnhaya style is: ܬ,ܫ,ܪ,ܩ,ܨ,ܦ,ܥ,ܣ,ܢ,ܡ,ܠ,ܟ,ܝ,ܛ,ܚ,ܙ,ܘ,ܗ, ܕ,ܓ,ܒ,ܐ
+[options]
+zip_safe = False
+include_package_data = False
+package_dir =
+ = src
+packages = find:
+python_requires = >=3.6
+install_requires =
+ triton >= 2.0.0
+ torch >= 2.0.0
+ transformers
+
+[options.packages.find]
+where = src
+
+import random
+
+from datasets import load_dataset
+
+
+def get_dataset(dataset_name: str, tokenizer, nsamples: int, seed: int, seqlen: int):
+ if dataset_name == "wikitext-2":
+ return get_wikitext2(nsamples, seed, seqlen, tokenizer)
+ elif dataset_name == 'ptb':
+ return get_ptb(nsamples, seed, seqlen, tokenizer, jointext='\n\n')
+ elif dataset_name == 'ptb-new':
+ return get_ptb(nsamples, seed, seqlen, tokenizer, jointext=' ')
+ elif dataset_name == 'c4':
+ return get_c4(nsamples, seed, seqlen, tokenizer)
+ else:
+ raise ValueError(f"Unknown dataset {dataset_name}")
+
+
+def get_wikitext2(nsamples: int, seed: int, seqlen: int, tokenizer, jointext: str = '\n\n'):
+ traindata = load_dataset('wikitext', 'wikitext-2-raw-v1', split='train')
+
+ trainenc = tokenizer(jointext.join(traindata['text']), return_tensors='pt')
+
+ rng = random.Random(seed)
+ trainloader = (rng.randint(0, trainenc.input_ids.shape[1] - seqlen - 1) for _ in range(nsamples))
+ trainloader = [trainenc.input_ids[:, i:i+seqlen] for i in trainloader]
+
+ return trainloader
+
+
+def get_ptb(nsamples: int, seed: int, seqlen: int, tokenizer, jointext: str):
+ traindata = load_dataset('ptb_text_only', 'penn_treebank', split='train')
+
+ trainenc = tokenizer(jointext.join(traindata['sentence']), return_tensors='pt')
+
+ rng = random.Random(seed)
+ trainloader = (rng.randint(0, trainenc.input_ids.shape[1] - seqlen - 1) for _ in range(nsamples))
+ trainloader = [trainenc.input_ids[:, i:i+seqlen] for i in trainloader]
+
+ return trainloader
+
+
+def get_c4(nsamples: int, seed: int, seqlen: int, tokenizer):
+ # WARNING: Many of the files in the allenai/c4 repo are marked as "Unsafe" by HuggingFace, possibly containing a virus. This particular file is not, and I doubt it's an issue, but worth noting.
+ traindata = load_dataset('allenai/c4', 'allenai--c4', data_files={'train': 'en/c4-train.00000-of-01024.json.gz'}, split='train')
+
+ rng = random.Random(seed)
+
+ trainloader = []
+ for _ in range(nsamples):
+ while True:
+ i = rng.randint(0, len(traindata) - 1)
+ trainenc = tokenizer(traindata[i]['text'], return_tensors='pt')
+ if trainenc.input_ids.shape[1] >= seqlen:
+ break
+
+ i = rng.randint(0, trainenc.input_ids.shape[1] - seqlen - 1)
+ inp = trainenc.input_ids[:, i:i + seqlen]
+ trainloader.append(inp)
+
+ return trainloader
+
+
+
+#!/usr/bin/env python3
+"""
+Benchmarks the generation speed of a model. While Benchmark.ipynb provides nice detailed performance data, it measures the kernels in isolation.
+This script measures "real world" performance by running the whole model in generation mode.
+It tests a grid of prompt lengths and generation lengths, and saves the timing results to `results.json`.
+"""
+import argparse
+import itertools
+import json
+import os
+import random
+import time
+
+import original_quant
+import torch
+import transformers
+from gptq_triton import load_quant
+from transformers import AutoTokenizer, LlamaConfig, LlamaForCausalLM
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--model', type=str, help='Path to model, either a HuggingFace model or a quantized model')
+parser.add_argument('--quant', action='store_true', help='Whether the model is quantized')
+parser.add_argument('--cuda', type=str, help='Whether to use the old CUDA kernel and format; this must be set to the path to the CUDA quantized model, and --model must be set to a HF model')
+parser.add_argument('--average', type=int, default=10, help='Number of times to run each test to get an average')
+
+
+def main():
+ args = parser.parse_args()
+
+ if args.cuda:
+ model = load_cuda_quant(args.model, args.cuda, 4, -1)
+ model.eval()
+ model.to('cuda')
+ elif not args.quant:
+ model = get_llama(args.model)
+ model.eval()
+ model.to('cuda')
+ else:
+ model = load_quant(args.model)
+ model.eval()
+ model.to('cuda')
+
+ tokenizer = AutoTokenizer.from_pretrained(args.model, use_fast=False)
+
+ prompt_lengths = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
+ max_lengths = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
+
+ lengths = set(itertools.product(prompt_lengths, max_lengths))
+
+ # Remove lengths that we've already tested
+ if os.path.exists('results.jsonl'):
+ with open('results.jsonl', 'r') as f:
+ for line in f:
+ line = json.loads(line)
+ key = (line['prompt_length'], line['max_length'])
+ if key in lengths:
+ lengths.remove(key)
+
+ # Shuffle the lengths so that we don't always test in the same order and get caching effects
+ lengths = list(lengths)
+ random.shuffle(lengths)
+
+ # TODO: For some reason the first run is always slow, so we run it once before the benchmark to warm things up
+ encoded_prompt = tokenizer.encode("TODO", add_special_tokens=False, return_tensors='pt').to('cuda')
+ _ = model.generate(
+ input_ids=encoded_prompt,
+ max_length=8,
+ do_sample=True,
+ num_return_sequences=1,
+ suppress_tokens=[model.generation_config.eos_token_id],
+ )
+
+ # Run the remaining benchmarks
+ with open('results.jsonl', 'a') as f:
+ for prompt_length, max_length in lengths:
+ print(f'Prompt length: {prompt_length}, max length: {max_length}')
+
+ results = []
+
+ for _ in range(args.average):
+ # Generate a long random string
+ # We do this every time to avoid caching effects
+ prompt = ''.join(random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 .,;:!?') for _ in range(2048 * 10))
+
+ # Encode and crop down
+ encoded_prompt = tokenizer.encode(prompt, add_special_tokens=False, return_tensors='pt')
+ encoded_prompt = encoded_prompt[:, :prompt_length]
+ encoded_prompt = encoded_prompt.to('cuda')
+
+ start_time = time.time()
+ _ = model.generate(
+ input_ids=encoded_prompt,
+ max_length=max_length + prompt_length,
+ do_sample=True,
+ num_return_sequences=1,
+ suppress_tokens=[model.generation_config.eos_token_id], # This prevents the sampler from ending early; it must generate max_length tokens
+ )
+ end_time = time.time()
+
+ gen_time = end_time - start_time
+ speed = max_length / gen_time
+
+ results.append((gen_time, speed))
+
+ # Compute the average
+ avg_time = sum(t for t, _ in results) / len(results)
+ avg_speed = (max_length * len(results)) / sum(t for t, _ in results)
+
+ print(f'Average generation time: {avg_time:.2f} seconds')
+ print(f'Average generation speed: {avg_speed:.2f} tokens per second')
+ print()
+
+ f.write(json.dumps({
+ 'prompt_length': prompt_length,
+ 'max_length': max_length,
+ 'average_time': avg_time,
+ 'average_speed': avg_speed,
+ 'runs': results,
+ }))
+ f.write("\n")
+ f.flush()
+
+
+def get_llama(model: str):
+ """
+ Load a pretrained Llama model
+ """
+ def skip(*args, **kwargs):
+ pass
+ # NOTE: This is a nasty hack, but it speeds up model building by a huge amount
+ old_inits = (torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_)
+ torch.nn.init.kaiming_uniform_ = skip
+ torch.nn.init.uniform_ = skip
+ torch.nn.init.normal_ = skip
+
+ model = LlamaForCausalLM.from_pretrained(model, torch_dtype='auto')
+ model.seqlen = 2048
+
+ # Restore the old initializers
+ torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_ = old_inits
+
+ return model
+
+
+def load_cuda_quant(model, checkpoint, wbits, groupsize):
+ """
+ Load a quantized model using the old CUDA kernel
+ """
+ config = LlamaConfig.from_pretrained(model)
+ def noop(*args, **kwargs):
+ pass
+ original_inits = (torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_)
+ torch.nn.init.kaiming_uniform_ = noop
+ torch.nn.init.uniform_ = noop
+ torch.nn.init.normal_ = noop
+
+ torch.set_default_dtype(torch.half)
+ original_init_weights = transformers.modeling_utils._init_weights
+ transformers.modeling_utils._init_weights = False
+ torch.set_default_dtype(torch.half)
+ model = LlamaForCausalLM(config)
+ torch.set_default_dtype(torch.float)
+
+ transformers.modeling_utils._init_weights = original_init_weights
+ torch.nn.init.kaiming_uniform_, torch.nn.init.uniform_, torch.nn.init.normal_ = original_inits
+
+ model = model.eval()
+ layers = original_quant.find_layers(model)
+ for name in ['lm_head']:
+ if name in layers:
+ del layers[name]
+ original_quant.make_quant(model, layers, wbits, groupsize, faster=False)
-Dravidian languages
+ del layers
- All Dravidian languages are written from left to right.
- All Dravidian languages have different scripts. But similarity can be found in their orthography.
+ print('Loading model ...')
+ if checkpoint.endswith('.safetensors'):
+ from safetensors.torch import load_file as safe_load
+ model.load_state_dict(safe_load(checkpoint))
+ else:
+ model.load_state_dict(torch.load(checkpoint))
+ model.seqlen = 2048
+ print('Done.')
-Kannada
+ return model
- Kannada has a 49 letter alphabet.
-Tamil
+if __name__ == '__main__':
+ main()
- common word endings :ள்ளது, கிறது, கின்றன, ம்
- common words: தமிழ், அவர், உள்ள, சில
- Tamil has a unique 30-letter alphabet. With the help of diacritics, as many as 247 letters can be written.
-அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன
-Telugu
-Telugu has 56 characters (Aksharamulu) including vowels (Achchulu) and consonants (Hallulu). Telugu uses eighteen vowels, each of which has both an independent form and a diacritic form used with consonants to create syllables. The language makes a distinction between short and long vowels.
-అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ అం అః క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల ళ వ శ ష స హ
+VPS
-౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯
-Bengali
+Oct 12, 2023
-The Bengali alphabet or Bangla alphabet (Bengali: বাংলা বর্ণমালা, bangla bôrnômala) or Bengali script (Bengali: বাংলা লিপি, bangla lipi) is the writing system, originating in the Indian subcontinent, for the Bengali language and is the fifth most widely used writing system in the world. The script is used for other languages like Assamese, Maithili, Meithei and Bishnupriya Manipuri, and has historically been used to write Sanskrit within Bengal.
-Bengali
+Ignas R.
-Bengali has unique 50 letter Alphabet.
+10min Read
+25 Common Linux Bash Script Examples to Get You Started
- The Bengali script has a total of 9 vowel graphemes, each of which is called a স্বরবর্ণ swôrôbôrnô "vowel letter". The swôrôbôrnôs represent six of the seven main vowel sounds of Bengali, along with two vowel diphthongs. All of them are used in both Bengali and Assamese languages.
+Bash or Bourne-again shell is one of the most popular shells and command languages for Linux VPS enthusiasts. It was first released in 1989 and was used as the default shell for most Linux distributions ever since.
-অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ
+Bash scripting allows users and system administrators to automate processes and save hundreds of hours of manual work. It’s worth mentioning that Bash is also available for Windows and macOS.
- The Bengali script has a total of 39 Consonants. Consonant letters are called ব্যঞ্জনবর্ণ bænjônbôrnô "consonant letter" in Bengali. The names of the letters are typically just the consonant sound plus the inherent vowel অ ô. Since the inherent vowel is assumed and not written, most letters' names look identical to the letter itself (the name of the letter ঘ is itself ghô, not gh).
+This tutorial will introduce you to what bash scripting is. It features over twenty useful bash script examples to start your bash scripting journey.
-ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল শ ষ স হ ড় ঢ় য় ৎ ঃ ং ঁ
+ What Is Bash Scripting Used For
+ 25 Bash Scripts Examples
+ 1. Hello World
+ 2. Echo Command
+ 3. Sleep Command
+ 4. Wait Command
+ 5. Comments
+ 6. Get User Input
+ 7. Loops
+ 8. Create an Array
+ 9. Conditional Statements
+ 10. Functions
+ 11. Display String Length
+ 12. Extract String
+ 13. Find and Replace String
+ 14. Concatenate Strings
+ 15. Check if a Number is Even or Odd
+ 16. Generate Factorial of Number
+ 17. Create Directories
+ 18. Read Files
+ 19. Print Files With Line Count
+ 20. Delete Files
+ 21. Test if File Exists
+ 22. Check Inodes and Disk Usage
+ 23. Send Email Example
+ 24. Update Packages
+ 25. Show Server Information
- has 10 diacritics denoting syllable rhymes -
+What Is Bash Scripting Used For
-া ি ী ু ূ ৃ ে ৈ ো ৌ
-Assamese
+Before we move on to the topic of bash scripting use cases, we need to elaborate on what bash and bash scripting are.
- The Assamese script has a total of 9 vowel graphemes, each of which is called a স্বরবর্ণ swôrôbôrnô "vowel letter" too.
+Bash is a command-line interface interpreter that runs in a text window where users can manage and execute shell commands. Bash – or shell scripting – on the other hand is the process of writing a set of commands to be executed on a Linux system. A file that includes such instructions is called a bash script.
-অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ
+To put it simply, the bash interpreter reads the bash script and executes the commands at the same time. For example, a Linux user can execute hundreds of commands with a single click instead of inputting them one by one. For this reason, bash scripting is the go-to choice for increasing productivity, setting up automation, and eliminating repetitive tasks.
+25 Bash Scripts Examples
- has a total of 39 Consonants. Consonant letters are called ব্যঞ্জনবর্ণ bænjônbôrnô "consonant letter" in Bengali.
+The following section will cover 25 of the most popular bash scripting examples, including variable manipulation and echoing out various values. We will also cover functions, arrays, loops, and much more.
+1. Hello World
-ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য ৰ ল শ ষ স হ ড় ঢ় য় ৎ ঃ ং ঁ
+Hello World is the most simple bash script to start with. We will create a new variable called learningbash and print out the words Hello World. First, open a new shell script file with a text editor of your choice:
- has 10 diacritics denoting syllable rhymes -
+nano hello.sh
-া ি ী ু ূ ৃ ে ৈ ো ৌ
-Canadian Aboriginal syllabics
+Paste the following lines into it:
-In modern writing, Canadian Aboriginal syllabics are indicative of Cree languages, Inuktitut, or Ojibwe, though the latter two are also written in alternative scripts. The basic glyph set is ᐁ ᐱ ᑌ ᑫ ᒉ ᒣ ᓀ ᓭ ᔦ, each of which may appear in any of four orientations, boldfaced, superscripted, and with diacritics including ᑊ ᐟ ᐠ ᐨ ᒼ ᐣ ᐢ ᐧ ᐤ ᐦ ᕽ ᓫ ᕑ. This abugida has also been used for Blackfoot.
-Other North American syllabics
-Cherokee
+#!/bin/bash
+#Creates a new variable with a value of "Hello World"
+learningbash="Hello World"
+echo $learningbash
-Cherokee writing features a unique syllabary consisting of the following characters:
+The command-line window showcasing the output of the first bash script – Hello World
-ᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴ.
-Artificial languages
-Esperanto (Esperanto)
+The first line (/bin/bash) is used in every bash script. It instructs the operating system to use a bash interpreter as a command interpreter.
+2. Echo Command
- words: de, la, al, kaj
- Six accented letters: ĉ Ĉ ĝ Ĝ ĥ Ĥ ĵ Ĵ ŝ Ŝ ŭ Ŭ, their corresponding H-system representation ch Ch gh Gh hh Hh jh Jh sh Sh u U or their corresponding X-system representation cx Cx gx Gx hx Hx jx Jx sx Sx ux Ux
- words ending in o, a, oj, aj, on, an, ojn, ajn, as, os, is, us, u, i, aŭ
+The echo bash command can be used to print out text as well as values of variables. In the following example, we will showcase how quotation marks affect the echo command. We will start by opening a new bash script file:
-Klingon (tlhIngan Hol)
+nano echo.sh
- When written in the Latin alphabet Klingon has the unusual property of a distinction in case; q and Q are different letters, and other letters are either always (e.g. D, I, S) or never (e.g. ch, tlh, v) written in upper case. This causes a large number of words that look quite strange to people who aren't used to it, for example: yIDoghQo', tlhIngan Hol (with mixed case).
- The apostrophe is fairly frequent, especially at the end of a word or syllable.
- Common suffixes: -be', -'a'
- Common words: 'oH, Qapla'
- May use one or more apostrophes in the middle of a word: SuvwI″a'
+This simple bash script example will create a new variable and print it out while using different quotation marks.
-Lojban (lojban.)
+#!/bin/bash
+provider="Hostinger"
+echo 'The best hosting provider is $provider'
+echo "The best hosting provider is $provider"
- (almost) all lowercase;
- common words lo, mi, cu, la, nu, do, na, se;
- paragraphs delimited with ni'o and sentences delimited with .i (or i);
- many five-letter words in consonant-vowel shape CCVCV or CVCCV;
- many short words with apostrophes between vowels, like ko'a pi'o etc.;
- usually no punctuation except for dots;
- may use commas in the middle of words (typically proper nouns).
+The command-line window shows the echo command
-Toki Pona (toki pona)
+As you can see, if the echo bash command is used with double quotation marks ““, then the script will print out the actual value of a variable. Otherwise, if the single quotation marks ‘‘ are used, it will print out only the name of a variable.
+3. Sleep Command
- alphabet is all lowercase except loanwords
- no diacritics
- only uses unvoiced consonants in writing, e.g. p, t, k
+Sleep command halts all currently running bash scripts and puts the system to sleep. Start by creating a new bash script file:
-Full alphabet: p, t, k, s, m, n, l, j, w, a, e, i, o, u
+nano sleep.sh
- common words li, mi, e, sina, ona, jan
- often sounds like a simplified and phonetic form of English or Swedish
- many two-syllable words
+Then, paste in the following simple script:
+#!/bin/bash
+sleep 10 && echo “I’ve been sleeping for 10 seconds, I want more” && sleep 10 && echo “I’m done sleeping, thanks!”
-!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´¬±‗¾¶§÷¸°¨•¹³²■
+A bash script with the sleep command. The basic idea is that it puts the system to a halt for a set amount of time
-㧟㩳㭎㳠䁖䄍䌷䓖䘯䜣䜩䝼䞍䥇䥺䦂䦃䦆䦛䦟䦶䲟䲠䲡䲣䴓䴔䴕䴖䴗䴘䴙䶮一丁七万丈三上下不与丐丑专且丕世丘丙业丛东丝丞丢两严丧丨个丫中丰串临丶丸丹为主丽举丿乃久乇么义之乌乍乎乏乐乒乓乔乖乘乙乜九乞也习乡书乩买乱乳乾亅了予争事二于亏云互亓五井亘亚些亟亠亡亢交亥亦产亨亩享京亭亮亲亳亵人亿什仁仂仃仄仅仆仇仉今介仍从仑仓仔仕他仗付仙仝仞仟仡代令以仨仪仫们仰仲仳仵件价任份仿企伉伊伍伎伏伐休众优伙会伛伞伟传伢伤伥伦伧伪伫伯估伲伴伶伸伺似伽佃但位低住佐佑体何佗佘余佚佛作佝佞佟你佣佤佥佧佩佬佯佰佳佴佶佻佼佾使侃侄侈侉例侍侏侑侔侗供依侠侣侥侦侧侨侩侪侬侮侯侵便促俄俅俊俎俏俐俑俗俘俚俜保俞俟信俣俦俨俩俪俭修俯俱俳俸俺俾倌倍倏倒倔倘候倚倜借倡倥倦倨倩倪倬倭倮倳债值倾偃假偈偌偎偏偕做停健偬偶偷偻偾偿傀傅傈傍傣傥傧储傩催傲傺傻像僖僚僦僧僬僭僮僳僵僻儆儇儋儒儡儿兀允元兄充兆先光克免兑兔兕兖党兜兢入全八公六兮兰共关兴兵其具典兹养兼兽冀冁冂内冈冉册再冒冕冖冗写军农冠冢冤冥冫冬冯冰冱冲决况冶冷冻冼冽净凄准凇凉凋凌减凑凛凝几凡凤凫凭凯凰凳凵凶凸凹出击凼函凿刀刁刃分切刈刊刍刎刑划刖列刘则刚创初删判刨利别刭刮到刳制刷券刹刺刻刽刿剀剁剂剃削剌前剐剑剔剖剜剞剡剥剧剩剪副割剽剿劁劂劈劐劓力劝办功加务劢劣动助努劫劬劭励劲劳劾势勃勇勉勋勐勒勖勘募勤勰勹勺勾勿匀包匆匈匍匏匐匕化北匙匚匝匠匡匣匦匪匮匸匹区医匾匿十千卅升午卉半华协卑卒卓单卖南博卜卞卟占卡卢卣卤卦卧卩卫卮卯印危即却卵卷卸卺卿厂厄厅历厉压厌厍厕厘厚厝原厢厣厥厦厨厩厮厶去县叁参又叉及友双反发叔取受变叙叛叟叠口古句另叨叩只叫召叭叮可台叱史右叵叶号司叹叻叼叽吁吃各吆合吉吊同名后吏吐向吒吓吕吖吗君吝吞吟吠吡吣否吧吨吩含听吭吮启吱吲吴吵吸吹吻吼吾呀呃呆呈告呋呐呒呓呔呕呖呗员呙呛呜呢呤呦周呱呲味呵呶呷呸呻呼命咀咂咄咆咋和咎咏咐咒咔咕咖咙咚咛咝咣咤咦咧咨咩咪咫咬咭咯咱咳咴咸咻咽咿哀品哂哄哆哇哈哉哌响哎哏哐哑哒哓哔哕哗哙哚哜哝哞哟哥哦哧哨哩哪哭哮哲哳哺哼哽哿唁唆唇唉唏唐唑唔唛唠唢唣唤唧唪唬售唯唰唱唳唷唼唾唿啁啃啄商啉啊啐啕啖啜啡啤啥啦啧啪啬啭啮啵啶啷啸啻啼啾喀喁喂喃善喇喈喉喊喋喏喑喔喘喙喜喝喟喧喱喳喵喷喹喻喽喾嗄嗅嗉嗌嗍嗑嗒嗓嗔嗖嗜嗝嗟嗡嗣嗤嗥嗦嗨嗪嗫嗬嗯嗲嗳嗵嗷嗽嗾嘀嘁嘈嘉嘌嘎嘏嘘嘛嘞嘟嘣嘤嘧嘬嘭嘱嘲嘴嘶嘹嘻嘿噌噍噎噔噗噘噙噜噢噤器噩噪噫噬噱噶噻噼嚅嚆嚎嚏嚓嚣嚯嚷嚼囊囔囗囚四囝回囟因囡团囤囫园困囱围囵囹固国图囿圃圄圆圈圉圊圜土圣在圩圪圬圭圮圯地圳圹场圻圾址坂均坊坌坍坎坏坐坑块坚坛坜坝坞坟坠坡坤坦坨坩坪坫坭坯坳坶坷坻坼垂垃垄垅垆型垌垒垓垛垠垡垢垣垤垦垧垩垫垭垮垲垴垸埂埃埋城埏埒埔埕埘埙埚埝域埠埤埭埯埴埸培基埽堀堂堆堇堊堋堍堑堕堙堞堠堡堤堪堰堵塄塌塍塑塔塘塞塥塩填塬塾墀墁境墅墉墒墓墙墚增墟墨墩墼壁壅壑壕壤士壬壮声壳壶壹夂处备夊复夏夔夕外夙多夜够夤夥大天太夫夭央夯失头夷夸夹夺夼奁奂奄奇奈奉奋奎奏契奔奕奖套奘奚奠奢奥女奴奶奸她好妁如妃妄妆妇妈妊妍妒妓妖妗妙妞妣妤妥妨妩妪妫妮妯妲妹妻妾姆姊始姐姑姒姓委姗姘姚姜姝姣姥姨姬姹姻姿威娃娄娅娆娇娈娉娌娑娓娘娜娟娠娣娥娩娱娲娴娶娼婀婆婉婊婕婚婢婧婪婴婵婶婷婺婿媒媚媛媪媲媳媵媸媾嫁嫂嫉嫌嫒嫔嫖嫘嫜嫠嫡嫣嫦嫩嫫嫱嬉嬖嬗嬲嬴嬷孀子孑孓孔孕字存孙孚孛孜孝孟孢季孤孥学孩孪孬孰孱孳孵孺孽宀宁它宄宅宇守安宋完宏宓宕宗官宙定宛宜宝实宠审客宣室宥宦宪宫宰害宴宵家宸容宽宾宿寂寄寅密寇富寐寒寓寝寞察寡寤寥寨寮寰寸对寺寻导寿封射将尉尊小少尔尕尖尘尚尜尝尢尤尥尧尬就尴尸尹尺尻尼尽尾尿局屁层居屈屉届屋屎屏屐屑展屙属屠屡屣履屦屮屯山屹屺屿岁岂岈岌岍岐岑岔岖岗岘岙岚岛岜岢岣岩岫岬岭岱岳岵岷岸岽岿峁峄峋峒峙峡峤峥峦峨峪峭峰峻崂崃崆崇崎崔崖崛崞崤崦崧崩崭崮崴崽崾嵇嵊嵋嵌嵘嵛嵝嵩嵫嵬嵯嵴嶂嶙嶝嶷嶼巅巍巛川州巡巢工左巧巨巩巫差巯己已巳巴巷巽巾币市布帅帆师希帏帐帑帔帕帖帘帙帚帛帜帝带帧席帮帱帷常帻帼帽幂幄幅幌幔幕幛幞幡幢干平年并幸幺幻幼幽广庀庄庆庇床庋序庐庑库应底庖店庙庚府庞废庠庥度座庭庳庵庶康庸庹庾廉廊廑廒廓廖廛廨廪廴延廷建廾廿开弁异弃弄弈弊弋式弑弓引弗弘弛弟张弥弦弧弩弭弯弱弹强弼彀彐归当录彖彗彘彝彡形彤彦彩彪彬彭彰影彳彷役彻彼往征徂径待徇很徉徊律後徐徒徕得徘徙徜御徨循徭微徵德徼徽心必忆忉忌忍忏忐忑忒忖志忘忙忝忠忡忤忧忪快忭忮忱念忸忻忽忾忿怀态怂怃怄怅怆怊怍怎怏怒怔怕怖怙怛怜思怠怡急怦性怨怩怪怫怯怵总怼怿恁恂恃恋恍恐恒恕恙恚恝恢恣恤恧恨恩恪恫恬恭息恰恳恶恸恹恺恻恼恽恿悃悄悉悌悍悒悔悖悚悛悝悟悠患悦您悫悬悭悯悱悲悴悸悻悼情惆惊惋惑惕惘惚惜惝惟惠惦惧惨惩惫惬惭惮惯惰想惴惶惹惺愀愁愆愈愉愍愎意愕愚感愠愣愤愦愧愫愿慈慊慌慎慑慕慝慢慧慨慰慵慷憋憎憔憝憧憨憩憬憷憾懂懈懊懋懑懒懔懦懵懿戆戈戊戋戌戍戎戏成我戒戕或戗战戚戛戟戡戢戤戥截戬戮戳戴戶户戽戾房所扁扃扇扈扉手才扎扑扒打扔托扛扣扦执扩扪扫扬扭扮扯扰扳扶批扼找承技抄抉把抑抒抓投抖抗折抚抛抟抠抡抢护报抨披抬抱抵抹抻押抽抿拂拄担拆拇拈拉拊拌拍拎拐拒拓拔拖拗拘拙拚招拜拟拢拣拥拦拧拨择括拭拮拯拱拳拴拶拷拼拽拾拿持挂指挈按挎挑挖挚挛挝挞挟挠挡挢挣挤挥挨挪挫振挲挹挺挽捂捃捅捆捉捋捌捍捎捏捐捕捞损捡换捣捧捩捭据捱捶捷捺捻掀掂掇授掉掊掌掎掏掐排掖掘掠探掣接控推掩措掬掭掮掰掳掴掷掸掺掼掾揄揆揉揍揎描提插揖揞揠握揣揩揪揭揲援揶揸揽揿搀搁搂搅搋搌搏搐搓搔搛搜搞搠搡搦搪搬搭搴携搽搿摁摄摅摆摇摈摊摒摔摘摞摧摩摭摸摹摺撂撄撅撇撑撒撕撙撞撤撩撬播撮撰撵撷撸撺撼擀擂擅操擎擐擒擓擗擘擞擢擤擦攀攉攒攘攥攫攮支攴攵收攸改攻放政故效敉敌敏救敕敖教敛敝敞敢散敦敫敬数敲整敷文斋斌斐斑斓斗料斛斜斟斡斤斥斧斩斫断斯新方於施旁旃旄旅旆旋旌旎族旒旖旗无既日旦旧旨早旬旭旮旯旰旱时旷旺昀昂昃昆昊昌明昏易昔昕昙昝星映春昧昨昭是昱昴昵昶昼显晁晃晋晌晏晒晓晔晕晖晗晚晟晡晤晦晨普景晰晴晶晷智晾暂暄暇暌暑暖暗暝暧暨暮暴暹暾曙曛曜曝曦曩曰曲曳更曷曹曼曾替最月有朊朋服朐朔朕朗望朝期朦木未末本札术朱朴朵机朽杀杂权杆杈杉杌李杏材村杓杖杜杞束杠条来杨杩杪杭杯杰杲杳杵杷杼松板极构枇枉枋析枕林枘枚果枝枞枢枣枥枧枨枪枫枭枯枰枳枵架枷枸柁柃柄柏某柑柒染柔柘柙柚柜柝柞柠柢查柩柬柯柰柱柳柴柽柿栀栅标栈栉栊栋栌栎栏树栓栖栗栝校栩株栲栳样核根格栽栾桀桁桂桃桄桅框案桉桌桎桐桑桓桔桕桠桡桢档桤桥桦桧桨桩桫桴桶桷梁梃梅梆梏梓梗梢梦梧梨梭梯械梳梵检棂棉棋棍棒棕棘棚棠棡棣森棰棱棵棹棺棼椁椅椋植椎椐椒椟椠椤椭椰椴椹椽椿楂楔楗楚楝楞楠楣楦楫楮楱楷楸楹楼榀概榄榆榇榈榉榍榔榕榘榛榜榧榨榫榭榱榴榷榻槁槊槌槎槐槔槛槟槠槭槲槽槿樊樗樘樟模樨横樯樱樵樽樾橄橇橐橘橙橛橡橥橱橹橼檀檄檎檐檑檗檠檩檫檬欠次欢欣欤欧欲欷欹欺款歃歆歇歉歌歙止正此步武歧歪歹死歼殁殂殃殄殆殇殉殊残殍殒殓殖殚殛殡殪殳殴段殷殿毁毂毅毋母每毒毓比毕毖毗毙毛毡毫毯毳毵毹毽氅氆氇氍氏氐民氓气氕氖氘氙氚氛氟氡氢氤氦氧氨氩氪氮氯氰氲水永氽汀汁求汆汇汉汊汐汔汕汗汛汜汝汞江池污汤汨汩汪汰汲汴汶汹汽汾沁沂沃沅沆沈沉沌沏沐沓沔沙沛沟没沣沤沥沦沧沩沪沫沭沮沱沲河沸油治沼沽沾沿泄泅泉泊泌泐泓泔法泖泗泛泞泠泡波泣泥注泪泫泮泯泰泱泳泵泶泷泸泺泻泼泽泾洁洄洇洋洌洎洒洗洙洚洛洞津洧洪洫洮洱洲洳洵洹活洼洽派流浃浅浆浇浊测浍济浏浑浒浓浔浙浚浜浞浠浣浦浩浪浮浯浴海浸浼涂涅消涉涌涎涑涓涔涕涛涝涞涟涠涡涣涤润涧涨涩涪涫涮涯液涵涸涿淀淄淅淆淇淋淌淑淖淘淙淝淞淠淡淤淦淫淬淮深淳混淹添淼清渊渌渍渎渐渑渔渖渗渚渝渠渡渣渤渥温渫渭港渲渴游渺湃湄湍湎湓湔湖湘湛湟湫湮湾湿溃溅溆溉溏源溘溜溟溢溥溧溪溯溱溲溴溶溷溺溻溽滁滂滇滋滏滑滓滔滕滗滚滞滟滠满滢滤滥滦滨滩滴滹漂漆漉漏漓演漕漠漤漩漪漫漭漯漱漳漶漾潆潇潋潍潘潜潞潢潦潭潮潲潴潸潺潼澄澈澉澌澍澎澜澡澧澳澶澹澾激濂濉濑濒��濠濡濮濯瀑瀚瀛瀣瀹灌灏灞火灭灯灰灵灶灸灼灾灿炀炅炉炊炎炒炔炕炖炙炜炝炫炬炭炮炯炱炳炷炸点炻炼炽烀烁烂烃烈烊烘烙烛烟烤烦烧烨烩烫烬热烯烷烹烽焉焊焐焓焕焖焘焙焚焦焯焰焱然煅煊煌煎煙煜煞煤煦照煨煮煲煳煸煺煽熄熊熏熔熘熙熟熠熨熬熳熵熹燃燎燔燕燠燥燧燮燹爆爝爨爪爬爰爱爵父爷爸爹爻爽爿片版牌牍牒牖牙牛牝牟牡牢牦牧物牯牲牵特牺牾牿犀犁犄犊犋犍犏犒犟犬犯犰犴状犷犸犹狁狂狃狄狈狍狎狐狒狗狙狞狠狡狨狩独狭狮狯狰狱狲狳狴狷狸狺狻狼猁猃猊猎猓猕猖猗猛猜猝猞猡猢猥猩猪猫猬献猱猴猷猸猹猾猿獍獐獒獗獠獬獭獯獾玄率玉王玎玑玖玛玟玢玩玫玮环现玲玳玷玺玻珀珂珈珉珊珍珏珐珑珙珞珠珥珧珩班珲球琅理琉琊琏琐琚琛琢琥琦琨琪琬琮琰琳琴琵琶琼瑁瑕瑗瑙瑚瑛瑜瑞瑟瑭瑰瑶瑷瑾璀璁璃璇璋璎璐璜璞璧璨璩璺瓒瓜瓞瓠瓢瓣瓤瓦瓮瓯瓴瓶瓷瓿甄甍甏甑甓甘甙甚甜生甥用甩甫甬甭甯田由甲申电男甸町画甾畀畅畈畋界畎畏畔留畚畛畜畝略畦番畲畴畸畹畿疃疆疋疏疑疒疔疖疗疙疚疝疟疠疡疣疤疥疫疬疮疯疰疱疲疳疴疵疸疹疼疽疾痂痃痄病症痈痉痊痍痒痔痕痖痘痛痞痢痣痤痦痧痨痪痫痰痱痴痹痼痿瘀瘁瘅瘊瘌瘐瘕瘗瘘瘙瘛瘟瘠瘢瘤瘥瘦瘩瘪瘫瘰瘳瘴瘵瘸瘼瘾瘿癀癃癌癍癔癖癜癞癣癫癯癶癸登白百皂的皆皇皈皋皎皑皓皖皙皤皮皱皲皴皿盂盅盆盇盈盉益盌盍盎盏盐监盒盓盔盕盖盗盘盛盜盝盞盟盠盡盢監盤盥盦盨盩盪盫盬目盯盱盲盳直相盹盻盼盽盾盿眀省眃眄眅眆眇眈眉眊看県眍眎眏眕眖眘眙眚眜眞真眠眢眣眥眦眨眩眫眬眭眮眯眰眲眳眵眶眷眸眹眺眼眾着睁睃睄睅睆睇睉睊睋睍睎睏睐睑睒睕睖睘睙睚睛睞睠睡睢督睥睦睧睨睩睪睫睬睱睴睹睺睻睽睾睿瞀瞂瞄瞅瞆瞇瞋瞌瞍瞎瞏瞐瞑瞒瞓瞕瞜瞞瞟瞠瞡瞢瞣瞥瞧瞩瞪瞫瞬瞭瞰瞳瞵瞷瞻瞼瞽瞿矀矂矃矄矅矇矊矍矎矒矔矗矘矙矚矛矜矝矞矟矡矢矣知矧矩矫矬短矮矯矰石矵矶矸矺矻矽矾矿砀码砂砉砌砍砏砑砒研砖砗砘砚砛砜砝砟砢砣砤砥砦砧砩砪砫砬砭砮砰砲破砷砸砹砺砻砼砾础硁硂硃硄硅硇硈硊硌硎硏硐硒硕硖硗硙硚硝硟硣硪硫硬硭确硱硷硼硽碀碁碃碅碇碉碌碍碎碑碒碓碔碕碗碘碚碛碜碟碠碡碣碥碦碧碩碭碰碱碲碳碴碵碶碸確碻碼碽碾磁磃磄磅磈磉磊磋磐磑磔磕磙磚磜磞磠磡磣磥磦磨磩磪磫磬磭磯磲磳磴磷磸磹磺磻磽磾磿礀礁礂礄礅礇礈礉礊礋礌礎礐礑礒礓礘礙礜礞礡礤礦礨礮礱礴示礼礽社礿祀祁祂祃祅祆祇祈祉祋祎祏祐祓祔祕祖祗祘祙祚祛祜祝神祟祠祢祤祥祦祧票祩祪祫祭祮祯祰祲祳祶祷祸祹祺祻祼祾祿禀禁禃禄禅禆禇禊禋禌禍禎福禐禑禔禖禗禘禛禜禞禠禡禢禣禤禥禦禧禨禩禪禫禬禭禮禰禱禳禵禸禹禺离禽禾禿秀私秃秅秆秉秋秌种科秒秔秕秘秙租秠秢秣秤秦秧秩秫秬秭积称秱秲秳秵秶秸秹秺移秼秽秾稀稂稃稄稅稆稇稈程稌稍税稑稓稔稖稗稘稙稚稛稜稞稟稠稡稣稧稬稭種稱稲稳稴稷稸稹稻稼稽稿穀穃穄穆穈穉穊積穐穑穗穙穛穜穟穢穩穪穫穯穰穱穴穵究穷穸穹空穻穽穿窀突窃窄窅窆窇窈窊窋窌窍窎窑窒窔窕窖窗窘窜窝窟窠窣窤窥窦窨窩窪窫窬窭窮窯窳窸窼窾窿竂竄竅竇竈立竌竏竑竒竖站竚竝竞竟章竢竣竤童竦竭端競竷竸竹竺竽竾竿笀笃笄笆笇笈笉笊笋笍笎笏笐笑笔笕笖笗笙笛笜笞笟笠笣笤笥符笧笨笪笫第笭笮笰笱笲笳笸笹笺笼笾笿筂筅筆筇筈等筊筋筌筍筏筐筑筒答策筘筚筛筝筠筢筣筥筦筩筭筮筰筱筲筴筵筶筷筸筹筻筼筽签简箅箇箋箍箏箐箒箓箔箕箖算箘箛箜箝箞箠管箢箣箤箥箦箧箨箩箪箫箬箭箯箱箴箷箸箹箽箾箿節篁篂篃範篆篇築篌篑篓篙篚篛篜篝篟篠篡篤篥篦篨篩篪篬篭篮篯篰篱篲篳篴篷篸篺篼篾簃簇簋簌簍簏簑簕簘簜簞簟簠簡簢簤簥簦簧簨簪簫簬簯簰簳簴簷簸簹簺簻簼簽簾簿籀籁籂籄籆籇籋籌籍籐籒籓籔籙籜籞籠籣籤籥籬籲米籴籶类籼籽粃粉粊粋粌粍粎粏粐粑粒粓粔粕粖粗粘粚粛粜粝粞粟粡粢粣粤粥粦粧粩粪粫粭粮粯粱粲粳粴粵粶粷粸粹粺粻粼粽精粿糀糁糂糅糇糈糉糊糌糍糓糕糖糗糙糜糞糟糠糢糦糧糨糮糯糰糱糴糵糷糸糺系紀紂紃約紅紇紊紋納紏紐紓純紖紗紘紙級紛紝素索紣紤紧紩紫紬紭紮累細紳紵紹紺紻紾絁終絃組絅絆絍絏結絒絓絕絙絛絜絞絟絡絣給絨絪絫絭絮統絲絳絶絷絹絺絼絽絾絿綀綂綄綅綈綊綍綎綏綑綒經綔綖綗綜綝綟綠綡綦維綮綱網綴綵綶綹綼綿緄緅緊緋緌緍緐緒緗線緛緜緝緞締緡緣緤緦編緩緯緰緱緲練緵緶緷緹緺緻緼縀縁縂縆縈縋縕縚縛縜縞縠縡縢縣縧縩縪縫縮縯縱縷縹縻縼總績縿繀繁繂繃繆繇繉繋繌繐繑繒織繕繖繙繚繜繝繞繟繣繤繧���繩繫繬繯繳繴繸繺繻繼繿纀纁纂纃纄纉續纍纏纑纒纔纕纖纗纘纛纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵缶缷缸缺缻缽缾罁罂罃罄罅罆罇罈罋罍罐网罔罕罗罘罙罚罝罟罡罢罣罥罨罩罪置罯罰罱署罴罵罶罷罹罼罽罾羀羁羅羇羈羉羊羌美羑羔羕羗羙羚羜羝羞羟羠羡羣群羧義羭羮羯羰羲羴羵羶羷羸羹羺羼羽羿翀翁翂翃翅翆翈翉翊翌翎翐翑習翔翕翖翘翙翚翛翜翟翠翡翢翣翥翦翧翩翫翬翭翮翯翰翱翳翸翹翻翼耀老考耄者耆耇耈耊耋而耍耎耐耑耒耕耖耗耘耙耜耡耢耥耦耧耨耩耪耮耰耱耳耴耵耶耷耸耻耽耿聂聃聆聊聋职聍聒联聖聘聚聛聜聝聞聟聠聡聣聦聧聩聪聫聬聭聯聰聱聲聴聵聶職聸聹聺聻聽聾聿肀肃肄肅肆肇肉肊肋肌肍肏肓肖肘肙肚肛肜肝肞肟肠股肢肣肤肥肧肩肪肫肭肮肯肰肱育肴肷肸肺肻肼肽肾肿胀胁胂胃胄胆胊背胍胎胑胔胖胗胙胚胛胜胝胞胠胡胤胥胧胨胩胪胫胬胭胯胰胱胲胳胴胵胶胸胹胺胼能胾脂脅脆脈脉脊脍脎脏脐脑脒脓脔脕脖脗脘脙脚脛脜脝脞脟脣脦脧脨脩脫脬脭脮脯脰脱脲脳脵脶脷脸脹脺脻脼脽脾脿腀腂腃腄腆腈腊腋腌腎腐腑腓腔腕腗腘腙腚腠腣腥腦腧腨腩腪腫腬腭腮腰腱腳腴腵腸腹腺腻腼腽腾腿膀膂膄膆膈膊膋膏膑膕膗膘膚膛膜膝膟膠膥膦膨膩膪膫膬膭膮膯膰膱膲膳膴膵膶膹膺膻膼膽膿臀臁臂臃臄臅臆臇臈臉臊臋臌臍臎臏臐臑臒臓臕臖臗臘臚臛臜臞臟臢臣臥臧臨自臬臭臮臯至致臶臺臻臼臾臿舀舁舂舃舄舅舆與興舉舊舋舌舍舐舒舔舖舛舜舞舟舡舢舣舦舨航舫般舭舯舰舱舲舳舴舵舶舷舸船舻舾艁艂艄艆艇艈艉艊艋艍艎艏艐艑艒艕艖艘艙艚艜艞艟艢艣艤艦艧艨艩艫艭艮良艰色艳艴艶艷艸艺艼艽艾艿节芃芄芈芊芋芍芎芏芑芒芖芗芘芙芜芝芟芡芤芥芦芨芩芪芫芬芭芮芯芰花芳芴芵芷芸芹芻芼芽芾苁苃苄苅苇苈苊苋苌苍苎苏苑苒苓苔苕苗苘苙苛苜苞苟苠苡苣苤若苦苧苫苯英苲苴苶苷苹苻苼苽苾苿茀茁茂范茄茅茆茇茈茉茊茌茍茎茏茐茑茔茕茖茗茚茛茜茝茞茢茣茧茨茫茬茭茯茱茲茴茵茶茷茸茹茺茻茼茽茿荀荃荄荅荆荇荈草荊荏荐荑荒荔荖荘荙荚荛荜荞荟荠荡荢荣荤荥荦荧荨荩荪荫荬荭荮药荳荷荸荻荼荽莁莂莅莆莉莊莎莒莓莕莖莘莙莚莛莜莞莠莢莤莨莩莪莫莱莲莳莴莵莶获莸莹莺莻莼莽莾莿菀菁菂菃菄菅菆菇菉菊菌菍菏菐菑菒菓菔菕菖菘菙菚菜菝菞菟菠菡菢菣菥菦菧菨菩菪菫菬菭華菰菱菲菳菴菵菸菹菽萁萃萄萆萈萊萋萌萍萎萏萑萗萘萚萜萝萢萤营萦萧萨萩萬萱萵萸萼落葆葇葉葋葌葍葎葏葑葔葖著葘葙葚葛葜葞葟葠葡葢董葦葨葩葫葬葭葮葯葰葱葲葳葴葵葶葷葸葹葺葻葾蒁蒂蒃蒄蒇蒈蒉蒋蒌蒐蒑蒕蒗蒘蒙蒜蒞蒟蒡蒧蒨蒪蒭蒯蒲蒴蒷蒸蒹蒺蒻蒼蒽蒾蒿蓁蓂蓃蓄蓆蓇蓉蓊蓋蓍蓏蓐蓑蓓蓔蓕蓖蓗蓙蓚蓛蓝蓞蓟蓠蓡蓣蓥蓦蓧蓨蓬蓮蓯蓰蓱蓳蓴蓵蓷蓸蓺蓼蓾蓿蔀蔁蔂蔄蔊蔌蔎蔑蔓蔔蔗蔘蔙蔚蔞蔟蔡蔣蔥蔦蔫蔬蔯蔱蔲蔴蔷蔸蔺蔻蔼蔽蔿蕁蕂蕃蕅蕈蕉蕊蕋蕌蕒蕖蕗蕘蕙蕚蕛蕜蕝蕞蕟蕡蕣蕤蕦蕧蕨蕰蕲蕳蕴蕵蕷蕹蕺蕻蕼蕾蕿薀薂薃薄薅薆薇薋薏薐薑薔薖薗薙薛薜薝薠薢薤薦薨薪薭薮薯薰薳薷薹薾薿藀藁藇藉藍藏藐藑藓藕藖藗藘藙藚藛藜藝藞藠藢藣藤藥藦藧藨藩藫藬藭藮藯藰藳藴藵藶藷藺藻藿蘁蘂蘅蘆蘇蘋蘌蘑蘓蘔蘖蘘蘧蘩蘪蘭蘸蘼蘿虀虃虈虋虍虎虏虐虑虒虔處虖虗虘虙虚虛虜虝虞號虡虢虧虫虬虮虯虰虱虲虵虹虺虻虼虽虾虿蚀蚁蚂蚈蚊蚋蚌蚍蚑蚒蚓蚕蚖蚘蚜蚝蚡蚢蚣蚤蚧蚨蚩蚪蚬蚯蚰蚱蚴蚵蚶蚺蚾蚿蛀蛄蛆蛇蛉蛊蛋蛎蛏蛐蛑蛔蛖蛘蛙蛚蛛蛜蛞蛟蛡蛢蛣蛤蛥蛩蛬蛭蛮蛯蛰蛱蛲蛳蛴蛶蛷蛸蛹蛻蛾蜀蜁蜂蜃蜆蜇蜈蜉蜊蜌蜍蜎蜏蜐蜑蜒蜓蜔蜕蜗蜘蜚蜜蜞蜠蜡蜢蜣蜥蜨蜩蜪蜫蜮蜱蜴蜷蜸蜺蜻蜼蜽蜾蜿蝀蝄蝇蝈蝉蝌蝍蝎蝑蝓蝕蝗蝘蝙蝝蝟蝠蝣蝤蝥蝦蝨蝮蝰蝴蝶蝸蝹蝺蝻蝼蝽蝾蝿螀螁螂螃螅螈螋融螐螑螓螕螖螗螘螚螝螞螟螠螡螢螣螤螥螦螧螨螫螬螭螯螳螵螺螽蟀蟂蟅蟆蟊蟋蟑蟒蟓蟛蟜蟝蟠蟢蟥蟧蟨蟪蟫蟬蟭蟮蟯蟲蟳蟹蟻蟼蟾蟿蠃蠄蠅蠆蠈蠊蠋蠌蠍蠎蠏蠒蠓蠔蠕蠖蠗蠙蠚蠛蠜蠝蠟蠡蠢蠣蠥蠩蠪蠭蠲蠶蠷蠹蠻蠼蠾血衂衄衅衋行衍衒術衔衕衖街衘衙衛衝衟衡衢衣补表衩衫衬衮衰衲衷衸衹衼衽衾衿袀袁袂袃袄袅袆袇袈袉袊袋袌袍袐袑袒袓袔袕袖袗袘袚袛袜袝袞袟袠袢袣袤袥袦袧袨袩袪被袬袭袱袴袵袷袼袽袿裀裁裂装裆裈裉裋裎裏裒裓裔裕裘裙裛補裝裟裡裢裣裤裥裨裩裯裰裱裲裳裴裶裸裹裺裼製裾褂複褊褋褌褎褏褐褑褒褓褔褙褚褛褜褠褡褣褥褦褧褨褪褫褯褰褱褲褴褵褶褸褹襁襄襆襌襍襕襖襘襛襞襟襢襤襦襪襫襬襱襲襶襻襽襾西要覂覃覅覆覇覈覊見覍規覐覓視覗覙覚覛覟覠覥覩親覯覵覺觀见观规觅视觇览觉觊觋觌觍觎觏觐觑角觓觔觖觚觜觝觞解觥触觫觭觯觱觳觸觼觽觿言訂訃訄訅訆訇計訉訊訋訌討訏訐訑訒訓訔訕託記訙訚訛訜訝訞訟訡訢訣訪設訮許訴訹診註証訽訾詀詄詅詇詈詐詒評詖詗詛詝詞詟詠詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詵詷詸詹詺詻詼詾詿誇誉誊誌認誓誕誖誘語誠誡誤誥說説誰課誳誴誻誽誾調諂諄諆談諈諉請諏諑諒諓論諘諛諝諠諡諥諦諧諮諱諸諹諺謀謂謄謇謏謚講謝謟謠謡謥謦謧謨謩謪謬謱謴謸謹謺謽謿譁譃譄譅證譌譓譔譗識譜譞譟譢警譫譬譯議護譸譻譽讀讈讉變讌讍讏讓讕讙讚讛讜讝讞讟计订讣认讥讦讧讨让讪讫讬训议讯记讱讲讳讴讵讶讷许讹论讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谉谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷谻谼谽谿豀豁豂豆豇豈豉豊豌豎豐豕豗豚豠象豢豧豨豪豫豬豭豰豳豵豷豸豹豺貂貅貉貊貋貌貍貎貏貐貑貒貓貔貗貘貙貛貝貞負財貢貣貤貦貧貨販貪貫責貮貯貲貴買貸費貼貽貿賀賁賂賄賅資賈賊賓賚賜賞賡賢賣賦賨質賮賯賰賱賲賳賴賷賸賹賺購贀贁贂贄贅贆贇贈贉贊贋贌贏贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赤赦赧赪赫赭走赲赳赴赵赶起赹赽趁趄超越趋趌趑趔趕趙趝趟趡趣趤趥趦趧趨趩趪趬趮趯趰趱足趴趵趶趷趸趹趺趼趽趾趿跁跂跃跄跅跆跈跉跊跋跌跍跎跏跐跑跒跓跔跖跗跘跚跛距跞跟跡跣跤跨跪跫跬路跰跱跳践跶跷跸跹跺跻跼跽跾踀踃踄踅踆踉踊踌踏踐踔踖踘踝踞踟踡踢踣踥踦踧踨踩踪踫踬踮踯踰踱踴踵踸踹踺踽蹀蹁蹂蹄蹅蹆蹇蹈蹉蹊蹋蹌蹎蹐蹑蹒蹓蹔蹖蹙蹚蹞蹟蹠蹡蹣蹤蹦蹧蹨蹩蹬蹭蹯蹰蹱蹲蹳蹴蹶蹷蹹蹻蹼蹽蹾蹿躁躄躅躇躉躍躏躐躒躔躘躛躜躞躦躩身躬躭躯躱躲躶躺躻躼躿軀軃軅軆軇軈軉車軌軍軎軏軐軒軓軔軘軙軛軟軠軡転軣軧軬軷軸軻軿輀輂較輈載輋輐輒輓輔輕輖輗輘輝輥輦輧輨輩輪輰輳輴輵輶輸輻輽輾輿轂轇轉轋轎轓轕轗轘轝轟轥车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辛辜辞辟辢辣辦辨辩辫辭辯辰辱農辵边辻込辽达迁迂迄迅迆过迈迋迍迎迏运近迒迓返迕还这进远违连迟迢迤迥迦迨迩迪迫迭迮迯述迳迴迷迸迹迺迻追退送适逃逄逅逆逇选逊逋逌逍透逐逑递逓途逕逖逗這通逛逝逞速造逡逢連逤逦逭逮逯週進逵逶逷逸逻逼逾逿遁遂遄遆遇遈遊運遍過遏遐遑遒道達違遗遘遙遛遜遝遞遠遡遢遣遥遨適遭遮遯遲遴遵遶遷選遹遺遽避邀邁邂邃還邅邆邇邈邉邊邋邌邏邑邓邔邕邗邘邙邛邝邠邡邢那邥邦邨邪邫邬邮邯邰邱邲邳邴邵邶邸邹邺邻邼邽邾邿郀郁郃郄郅郇郈郊郋郎郏郐郑郓郕郗郘郙郛郜郝郞郟郡郢郤郦郧部郪郫郭郯郴郵郸都郾郿鄂鄄鄉鄍鄑鄗鄘鄙鄚鄛鄜鄞鄟鄠鄡鄢鄣鄤鄦鄧鄩鄫鄬鄮鄯鄰鄱鄳鄶鄷鄹鄺鄽鄿酀酁酂酃酆酇酉酊酋酌配酎酐酒酖酗酚酝酞酡酢酣酤酥酦酨酩酪酬酮酯酰酱酲酳酴酵酶酷酸酹酺酼酽酾酿醁醃醄醅醆醇醉醊醋醌醍醎醐醑醒醕醖醚醛醜醞醡醢醣醥醨醪醫醭醮醯醰醱醲醴醵醺醻醼醽醾醿釀釆采釉释釋里重野量釐金釔釘釙釛釜針釟釠釡釢釣釤釥釦釪釭釱釾釿鈂鈆鈇鈉鈍鈕鈖鈙鈡鈣鈤鈦鈧鈨鈩鈪鈰鈱鈴鈵鈶鈸鈺鈽鈾鈿鉀鉁鉂鉃鉄鉅鉍鉏鉐鉔鉛鉤鉴鉼鉽銀銅銊銌銎銑銒銓銘銙銜銝銦銧銫銮銲銳銶銷鋂鋅鋆鋇鋈鋊鋋鋎鋐鋒鋕鋣鋤鋪鋫鋬鋭鋰鋱鋵鋷鋸鋹鋺鋻鋼鋾錃錄錆錈錋錏錐錗錞錠錢錣錥錦錧錨錫錯録錾鍀鍊鍋鍍鍎鍏鍐鍑鍓鍔鍚鍛鍟鍤鍥鍦鍧鍩鍪鍬鍮鍱鍳鍵鍸鍼鎄鎇鎋鎌鎍鎏鎔鎖鎗鎘鎚鎝鎪鎭鎮鎯鎰鎲鎴鎸鏁鏂鏆鏈鏉鏊鏍鏏鏐鏕鏖鏘鏟鏡鏢鏤鏦鏭鏰鏱鏸鏻鏽鏿鐄鐇鐍鐎鐏鐐鐑鐓鐖鐘鐣鐤鐧鐨鐩鐬鐮鐰鐲鐳鐴鐵鐷鐻鐾鐿鑀鑄鑊鑑鑕鑘鑛鑟鑢鑣鑨鑪鑫鑮鑰鑱鑲鑴鑵鑷鑽鑾鑿钁钃钅钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钜钝钞钟钠钡��钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铌铍铎铏铐铑铒铓铔铕铖铗铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铩铪铫铬铭铮铯铰铱铲铳铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗锘错锚锛锜锝锞锟锡锢锣锤锥锦锧锨锩锪锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镄镅镆镇镈镉镊镌镍镎镏镐镑镒镓镔镕镖镗镘镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镵镶長镻长門閃閉開閏閑閒間閔閗閛閟関閣閤閧閬閭閮閯閰閱閳閴閶閷閹閺閻閽閾閿闀闃闄闅闆闇闉闊闌闍闒闕闚闛關闟闡闢门闩闪闫闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛阜队阡阢阤阨阪阮阯阱防阳阴阵阶阸阻阼阽阿陀陁陂附际陆陇陈陉陋陌降限陔陕陗陙陛陜陝陞陟陠陡院陣除陧陨险陪陬陮陰陲陳陴陵陶陷陸陻陼陽隂隃隄隅隆隈隊隋隍階随隐隔隗隘隙際障隝隣隤隥隦隧隨隩險隰隱隲隳隶隸隹隺隻隼隽难雀雁雄雅集雇雉雊雋雌雍雎雏雑雒雔雕雖雘雙雚雜雞雟雠離難雨雩雪雮雯雰雱雲雳零雷雹電雾需霁霂霄霅霆震霈霉霍霎霏霑霓霖霘霚霜霝霞霠霣霤霧霨霩霪霫霭霮霰露霳霸霹霾靃靄靈靉青靓靖静靛靜非靠靡面靣靥靦革靭靮靰靱靳靴靵靶靷靸靹靺靼靿鞄鞅鞊鞋鞍鞎鞏鞑鞒鞓鞔鞖鞗鞘鞚鞛鞝鞟鞠鞡鞣鞦鞧鞨鞪鞫鞬鞭鞮鞯鞲鞴鞺鞻鞿韂韆韈韋韌韍韓韗韟韥韦韧韨韩韪韫韬韭韮韰韱韲音韴韵韶韷韺韻韼韽響頁頂頃項順須頉頊頋頌頍頎預頒頓頗領頜頞頠頤頦頨頫頭頰頳頵頷頸頹頺頻顀顆題額顎顏顐顑顒顓顔顕顗願顛顝類顟顣顧顨顩顪顫顬顯顱顳顴页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颓颔颖颗题颙颚颛颜额颞颟颠颡颢颤颥颦颧風颩颱颵颺颻颼飀飆风飏飐飑飒飓飔飕飖飗飘飙飚飛飞食飢飥飦飧飨飩飪飭飮飯飰飲飳飷飸飺飼飽飾餀餁餂餃餅餆餇餈餉養餌餍餐餒餓餔餖餗餘餚餟餦館餫餬餮餱餵餼餽饅饆饈饋饌饏饐饑饒饔饕饘饜饝饟饡饤饥饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馍馏馐馑馒馓馔馕首馗馘香馥馧馨馬馮馳馴馻馿駃駉駋駐駕駚駛駜駝駞駡駣駥駨駮駰駳駵駶駷駸駹騁騃騄騇騊騍騎騔騙騛騠騣騧騫騰騷騺騻騼騽騾騿驀驁驂驄驅驆驇驈驊驌驎驑驕驖驗驘驙驚驛驟驡驢驥驦驩马驭驮驯驰驱驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骧骨骩骫骯骰骱骳骶骷骸骹骺骻骼骾骿髀髁髂髅髆髉髋髌髏髑髒髓體髕高髞髟髠髡髣髤髥髦髧髪髫髭髮髯髲髳髴髹髻髼髽髿鬀鬂鬃鬄鬅鬆鬈鬉鬋鬏鬐鬑鬓鬖鬘鬙鬚鬛鬟鬠鬢鬣鬥鬧鬯鬱鬲鬳鬶鬸鬻鬼鬽鬿魁魂魃魄魅魆魇魈魉魋魍魏魑魒魔魖魚魛魜魟魣魫魰魱魳魵魸魺魽魾魿鮀鮁鮄鮅鮇鮈鮊鮋鮌鮍鮎鮘鮟鮠鮡鮣鮨鮪鮭鮮鮰鮻鮼鮾鯀鯁鯂鯅鯆鯈鯊鯋鯏鯐鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛鯝鯡鯨鯩鯬鯮鯵鯶鯽鰁鰆鰉鰌鰍鰕鰜鰞鰟鰠鰡鰤鰧鰨鰪鰫鰬鰰鰲鰵鰷鰸鰹鰻鰽鰿鱀鱂鱄鱇鱉鱌鱓鱖鱗鱣鱤鱥鱧鱮鱯鱲鱵鱺鱻鱼鱽鱾鱿鲀鲁鲂鲃鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳚鳛鳜鳝鳞鳟鳠鳡鳢鳣鳤鳥鳩鳪鳰鳳鳴鳶鳷鳾鳿鴂鴃鴉鴐鴒鴓鴙鴜鴞鴟鴢鴣鴥鴦鴧鴨鴪鴫鴭鴮鴰鴱鴲鴳鴴鴵鴷鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂鵄鵋鵏鵝鵟鵣鵨鵪鵬鵰鵲鵳鵼鶃鶄鶆鶇鶈鶊鶍鶎鶐鶒鶓鶕鶗鶚鶜鶝鶟鶠鶡鶢鶩鶫鶲鶳鶴鶸鶺鷁鷃鷇鷉鷖鷘鷟鷣鷥鷦鷧鷩鷫鷭鷱鷲鷳鷴鷵鷷鷹鷺鷼鷽鷿鸀鸁鸂鸇鸊鸍鸓鸖鸘鸟鸠鸡鸢鸣鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹕鹖鹗鹘鹙鹚鹛鹜鹞鹟鹠鹡鹣鹤鹦鹧鹨鹩鹪鹫鹬鹭鹮鹯鹰鹱鹳鹵鹹鹼鹽鹾鹿麀麂麃麄麅麆麇麈麉麊麋麎麏麐麑麒麓麕麖麗麚麜麝麞麟麡麣麤麥麦麧麨麩麯麰麴麵麸麹麻麼麽麾麿黃黄黇黉黋黍黎黏黑黒黔默黛黜黝點黟黠黡黢黥黧黨黩黪黮黯黴黶黹黺黻黼黽黾黿鼂鼄鼅鼇鼈鼉鼊鼋鼍鼎鼏鼐鼑鼓鼖鼗鼘鼙鼜鼞鼠鼢鼤鼥鼩鼪鼫鼬鼮鼯鼰鼱鼶鼷鼹鼻鼾齁齄齆齊齋齏齐齑齒齗齛齜齡齢齣齦齧齮齯齰齲齸齺齻齼齽齾齿龀龁龂龃龄龅龆龇龈龉龊龋龌龍龎龑龒龓龔龙龚龛龜龝龟龠龢龤𢶯秊裏
+The above example starts with a simple sleep bash command that will put your system to sleep for 10 seconds. After that, we combine the previously learned echo command with sleep – this way system will sleep for 10 seconds, then print out some words, sleep again, print out some words again and end its operation.
+Pro Tip
-䰾䲁䲘䴉一上下不且世丟両並中主久之乎也乾亂了予事二互亙些亞亡交享亮亸人什仁今介仍仔他付代令以件任份企伏伐休伙估伴似但佇佈位低住佔何作你佩併使來侖依侮侵侶侷便俁係保俠信修倀倆倉個倍們倒倖候借倣倦倫值偉做停側偵偷偺偽傑傖傘備傚傢傭傯傲傳傴債傷傻傾僂僅僉像僑僕僥僨僱價儀儂億儈儉儐儔儕儘償優儲儷儺儻儼兄充兆兇先光克兌免兒兗入內全兩公共其具冊再冑冒冠冪冷凃凍凜凱出刃分切別利刪到制剄則剋前剎剛剝剩剪剮副割剴創剷劃劇劉劊劌劍劑力功加劣助努効勁勇勉動勗務勚勛勝勞勢勦勩勱勳勵勸勻包化匭匯匱區十千升午半卑卓協博占卡危即卹卻厙原厠厭厲厴去參叄又及友反取受叛叡叢口另只叫召可台史司吃各合吋同名吐向否吧吳吶吹呀呂呃呆告呎呢周呸呼命和咖咼品哇哈哎員哥哦哪哭哼唄唝唯唸啊問啞啟啡啣啦啰啴善喊喚喜喧喪喫喬單嗆嗇嗊嗎嗚嗩嗯嗶嘆嘍嘔嘖嘗嘛嘜嘩嘮嘯嘰嘴嘵嘻嘽嘿噁噓噝噢噥噦器噯噲噴噸噹嚀嚇嚐嚕嚙嚥嚦嚨嚮嚲嚳嚴嚶囀囁囂囅囈囉囊囌囑四回因囪圇國圍園圓圖團土在地圾坐坦坵垃型垯垱埃埋城域埡執培基堅堆堝堪堯報場塆塊塋塏塒塗塚塢塤填塵塹境墊墜增墮墳墶墾壇壋壓壘壙壚壞壟壠壢壩壪士壯壺壽外多夠夢夥大天太夫失夾奇奐奧奩奪奮女奴她奼好如妙妝妨妳始姍姑姦姪姿威娘娛婁婭婳媧媯媼媽嫗嫵嫺嫻嫿嬈嬋嬌嬙嬝嬡嬤嬪嬰嬸孃孌子字存孤孩孫學孿宂它宅宇安完官宙定客宣宮害家容寂寄密富寞寡寢實寧審寫寬寵寶封射將專尊尋對導小少尖就尷尾局屁屃居屆屍屓展屜屢層屨屬岡峣峯峴島峽崍崑崗崙崢嵐嵒嵚嶁嶄嶇嶔嶗嶠嶢嶧嶴嶸嶺嶽巋巒巔巖工巧巨差巰己已巴市希帥師席帳帶常幀幃幗幘幟幣幫幬平年幹幼幾床底度庫庭廁廂廄廈廚廝廟廠廡廢廣廩廬廳延建式弒弔弟弱張強彆彈彌彎彙形彥彩彫影彼往征待很後徑徒得從徠復徬微徹心必忍志忘忙忠快忽怎怕思急性怪恆恐恕恥恨恩息悅您悲悵悶悽情惜惡惱惲想惶惹惻意愚愛愜感愨愴愷愾慄慇慈態慍慘慚慟慢慣慨慪慫慭慮慳慶慷慼慾憂憊憐憑憒憖憚憤憫憮憲憶憾懂懃懇應懌懍懟懣懨懲懶懷懸懺懼懾戀戇成我戔或戧戩戰戲戶所扁手才打扞扭找承技把投抗抱抵抹拆拋拘招拜拭拯拿持指按挑振挺挾捏捕捨捫捲掃掄掉排掙掛採探掣接控推掩揀揍描提揚換揮揹揾搆損搖搗搞搥搧搭搵搶搾摀摃摑摜摟摧摯摳摶摻撈撐撓撕撚撟撣撥撫播撲撳撻撾撿擁擄擇擊擋擔據擠擣擦擬擯擰擱擲擴擷擺擻擼擾攄攆攏攔攖攙攛攜攝攢攣攤攩攪攬支收改攻放故敍救敗敘教敞敢散敬整敵數斂斃文斕料斥斬斯新斷方於施旂旅既日早旸昇明易星是昽時晉晚晝暈暉暗暘暢暫暱曄曆曇曉曖曠曨曬曲更書曾最會月有朋服朗望期朧本朮材束東果枱枴架某染柵柺柿校根格桶桿梔梘條梟梱梲梾梿棁棄棍棒棖棗棚棟棧棲棶楊楓楚楨業極概榦榮榿槃構槍槓槚槜槤槧槨槳樁樂樅樑樓標樞模樣樸樹樺橈橋機橢橫檁檇檉檔檜檟檢檣檯檳檸檻檾櫂櫃櫓櫚櫛櫝櫞櫟櫥櫧櫨櫪櫫櫬櫱櫳櫸櫺櫻欄權欏欒欖次欣欲欺欽款歉歌歎歐歛歟歡止正此步武歲歷歸死歿殆殘殞殤殫殭殮殯殲段殺殼毀毆母每毒比毘毿氂氈氌氣氫氬氳水永氹氾求汎汙汰汲決沄沉沍沒沖沨治況泊法注洩洶活派流浈浐浪浬浹涇消涢涯涼淒淘淚淡淥淨淪深淵淶混淺清渙減渢渣渦測渴渾湊湞湧湯溇溈源準溝溫溳溼滄滅滌滎滓滪滬滯滲滴滸滻滾滿漁漂漊漚漢漣漫漬漲漸漿潁潑潔潛潤潯潰潿澀澆澇澐澗澠澤澦澮澱激濁濃濕濘濛濟濤濫濬濰濱濺濼濾瀅瀆瀉瀋瀏瀕瀘瀝瀟瀠瀦瀧瀨瀰瀲瀾灃灄灑灘灝灣灤灩火灰災炮炸為烈烏烤烴無然煇煉煒煖煙煢煥照煩煬熒熗熱熾燁燄燈燉燐燒燙燜營燦燬燭燴燻燼燾爍爐爛爭父爸爺爾牀牆片牘牠物牲牴特牽犖犛犢犧犯狀狂狗狝狹狽猙猛猶猻獁獄獅獎獨獪獫獮獰獲獵獷獸獺獻獼玀玆率玙玚玡玨玩珮珰現球理琍琎琺琿瑋瑒瑣瑤瑩瑪瑯璉璡璣璦璫環璵璽瓊瓏瓔瓚瓦甌甕甚生產甦用由甲甽界留畢略畫畬異當疇疊疭病痙痛痠痲痳痺瘆瘉瘋瘍瘓瘞瘡瘧瘮瘲瘺療癆癇癉癒癘癟癡癢癤癥癧癩癬癭癮癰癱癲發白百的皚皮皰皸皺盃益盔盡監盤盧目直相眉看真眠眼眾睜睡瞄瞧瞭矓知短石破硜硤硨硯碌碎碟確碼磧礙礪礫礬示社祝神禁禕禮秀私秈科秘移程稚種稱穌穎穠穡空穿突窮窶窺竊立站竟童端競笑笨第筆等答筜筧箇算管節篋篔簀簡簣籃籟籠籩籮粉精��糖糝糟糲糶系糾約紅紆紈紉納紕級紜紡索細紲絀終組絆絎結絕絝絢給統絲綁綃綆綌經綞綢綣綬綯綰網綸綺綻綽綾緇緒緖緘緙緣緬練縉縊縐縑縝縟縭縮縲縵縶總繅繡繪繫繭繰繹繼繽繾纈纊續纓纜缺罌罩罪置罵罷羆羋美群羥羨義習翻翼翽老者而耬耶聊聘聞聯聰聲聳職聽肉肘肚肢肩肯背胎能脅脆腖腡腥腦腳膃膜膝膽膾臂臉臝臠臥自臭至臺與興舉舊舞般船艘艦良艱色芐花芽苦英荷莧菜華萇萌萬落葒著蒐蒓蒔蒙蓀蓄蓋蓽蔓蔭蔹蕆蕎蕕蕢蕩蕪蕭薄薈薊薌薘薟薩薪薺藎藏藥藪藹蘄蘊蘗蘚蘞蘢蘺處虛虧蛋蛺蜂蝦螄螻蟄蟈蟎蟣蟲蟶蠐蠑蠢蠱血衊行術街衛衞衣表袋被袯裊補裡製複褘褳褻襇襏襝襠襯襲襴西要覆見規覓視覘覡覦親覬覲覷覺覽覿觀解觴觶觸言計訊討訓訖託記訥訪設許訴訶詁詆詎詔評詘詡試詭話該誄誅誆誇認誑誓誚誣誤誦誨說誰課誶誹誼調談請諍諒論諗諜諞諢諤諧諫諭諳諶諷諼諾謁謅謊謎謐謔謖謗謙講謝謫謳謾證譎譏譖識譙譚警譭議譴護譾讀變讎讒讓讖豐豔豪貝負財貨貰貳貴貶買貺費賃資賊賑賒賕賞賠賣賤質賫賬賭賽賾贍贏贐贓贔贖贗贛赬走起超越趕趣趲足跑跟路跳踩蹕蹩蹺躂躊躋躑躓躕躚躡躥躪身躲軀車軋軌軍軑軟軤軫軲軹軺軼軾較輅輇載輊輕輛輜輞輟輩輬輯輸轀轄轅轆轉轍轔轟轡轢轤辜辮辱迅迎近返迪迫述迷追退送逃透逐途這通逝逞速造連進逼遇遊運遍過道達違遘遠適遭選遺遼避還邐那邪部郵都鄆鄒鄔鄖鄙鄭鄲鄴酈配酷醒醬釁釃釅采釋重量金釓釕釗釧釩釵釷釹釺鈀鈁鈃鈄鈈鈎鈐鈑鈔鈕鈞鈥鈮鈷鈹鉈鉉鉋鉑鉕鉗鉚鉞鉦鉬鉭鉸鉺鉻鉿銃銍銖銚銠銣銥銨銩銪銬銱銳銹銻銼鋁鋃鋌鋏鋙鋝鋟鋥鋦鋨鋯鋸錁錇錒錕錘錙錚錛錟錡錢錮錯錳錶錸鍁鍃鍆鍇鍘鍠鍰鍶鍺鍾鎂鎊鎖鎛鎡鎢鎣鎦鎧鎩鎬鎮鎳鎵鎿鏃鏌鏑鏗鏜鏝鏞鏡鏨鏵鏷鏹鐃鐋鐒鐔鐙鐝鐠鐦鐫鐸鐺鑌鑒鑔鑞鑠鑥鑭鑹鑼鑽钂铘铴镋長門閂閃閉開閌閎閒間閘閡閣閥閨閩閲閼闈闊闋闐闓闔闖關闞闥防阻附限陘院除陷隉隊隕際障隨險隴雄雅集雇雕雖雙雛雜離難雲零雷電需露霸霽靂靈靚靜非靠面靨革鞀韁韃韉韙韜韞音響頇須頏預頑頓領頡頭頲顆題願顙類顢顥顧顯顰颭颮颯颳颶颸飄飛飫飴飿餄養餎餏餐餑餓餛餜餞餡館餳餶餷餾餿饁饃饉饊饗饞饢馌首馨馬馭馱駁駑駒駔駘駛駟駢駭駱駿騂騅騏騖騙騤騭騮騶騸驃驅驍驏驕驗驚驤驪骨骸體髖高鬆鬍鬥鬧鬨鬩鬮鬼魎魔魘魚魢魨魯魴魷鮃鮐鮑鮓鮫鮶鯇鯉鯢鯤鯧鯪鯫鯴鯷鯿鰃鰈鰏鰓鰛鰣鰥鰩鰭鰱鰳鰺鰾鱅鱈鱒鱔鱘鱝鱟鱠鱭鱷鱸鲺鳥鳲鳴鴆鴇鴕鴛鴝鴯鵃鵐鵑鵒鵓鵜鵠鵡鵮鵯鶉鶘鶥鶯鶹鶻鶼鶿鷂鷊鷓鷗鷙鷚鷯鷸鸌鸏鸕鸚鸛鸝鸞鸤鹝鹲麗麪麻麼麽黌黏默點黷鼓鼕鼴齔齕齙齟齠齪齬齷龐龕
+A bash script can always be terminated by clicking CTRL + C without waiting for it to finish its operation.
+4. Wait Command
-"_—“”‥…‧♪ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〰︎〰️〱〲〳〴〵〶〷〸〹〺〻〼〽〽︎〽️〾〿・﹁﹂﹏!(),:;?[]{}~!。1234567890
+wait is a built-in Linux command that waits for completion of running process. The wait command is used with a particular process id or job id.
-ḉ̣̮̱̀́̂̃̄̆̇̈̊̌̑ΘθΞξΥυΨψΩωϘАаБВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяЀѐЁёЂђЃѓЄєЅѕІіЇїЈјЉљЊњЋћЌќЍѝЎўЏџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӁӂӃӄӅӆӇӈӉӊӋӌӍӎӀӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯᴫᵸ–⃝◌Ⱛⱛⷠⷡⷢⷣⷤⷥⷦⷧⷨⷩⷪⷫⷬⷭⷮⷯⷰⷱⷲⷳⷴⷵⷶⷷⷸⷹⷺⷻⷼⷽⷾⷿ中文ꙀꙁꙂꙃꙄꙅꙆꙇꙈꙉꙊꙋꙌꙍꙎꙏꙐꙑꙒꙓꙔꙕꙖꙗꙘꙙꙚꙛꙜꙝꙞꙟꙠꙡꙢꙣꙤꙥꙦꙧꙨꙩꙪꙫꙬꙭꙮ꙯꙰꙱꙲꙳ꙴꙵꙶꙷꙸꙹꙺꙻ꙼꙽꙾ꙿꚀꚁꚂꚃꚄꚅꚆꚇꚈꚉꚊꚋꚌꚍꚎꚏꚐꚑꚒꚓꚔꚕꚖꚗꚘꚙꚚꚛꚜб
+Here’s how to create a wait bash script. Begin by creating a new bash file:
-!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿıƒ—‗’“”•‥…‧※≠─│┌┐└┘├┤┬┴┼═║╔╗╚╝��╣╦╩╬▀▄█░▒▓■♪ 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨〩〪〭〮〯〫〬〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゔゕゖ゙゚゛゜ゝゞゟァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヰヱヲンヴヶ・ーㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ一丁七万丈三上下不与且世丘丙両並丨中串丶丸丹主丼丿久乏乗乘乙九乞乱乳乾亀亂亅了予争事二互五井亜亞亠亡交享京亭人仁今介仏仕他付仙代令以仮仰仲件任企伎伏伐休会伝伯伴伸伺似但位低住佐体何余佛作佳併使來例侍供依価侮侯侵侶便係促俊俗保信修俳俵俸俺倂倉個倍倒候借倣値倫倹假偉偏停健側偵偶偽傍傑傘備催傲傳債傷傾僅働像僕僚僞僧價儀億儉儒償優儿元兄充兆先光克免児兒党入全兩八公六共兵具典兼冂内円冊再冒冖冗写冠冥冫冬冶冷凄准凍凝几凡処凵凶凸凹出刀刃分切刈刊刑列初判別利到制刷券刹刺刻則削前剖剛剝剣剤剩副剰割創劇劍劑力功加劣助努励労効劾勃勅勇勉動勘務勝勞募勢勤勧勲勳勵勸勹勾匂包匕化北匚匠匸匹区医匿區十千升午半卑卒卓協南単博卜占卩印危即却卵卷卸卽厂厄厘厚原厳厶去参參又及友双反収叔取受叙口古句叩叫召可台史右号司各合吉同名后吏吐向君吟否含吸吹呂呈呉告周呪味呼命和咲咽哀品員哲哺唄唆唇唐唯唱唾商問啓善喉喚喜喝喩喪喫單営嗅嗣嘆嘱嘲噂器噴嚇嚴囑囗囚四回因団困囲図固国圈國圍圏園圓圖團土圧在地坂均坊坑坪垂型垣埋城域執培基埼堀堂堅堆堕堤堪報場堵塀塁塊塑塔塗塚塞塡塩塵塾境墓増墜增墨墮墳墾壁壇壊壌壓壘壞壤士壮壯声壱売壹壽変夊夏夕外多夜夢大天太夫央失奇奈奉奏契奔奥奧奨奪奬奮女奴好如妃妄妊妖妙妥妨妬妹妻姉始姓委姫姻姿威娘娠娯婆婚婦婿媒媛嫁嫉嫌嫡嬢孃子孔字存孝季孤学孫學宀宅宇守安完宗官宙定宛宜宝実客宣室宮宰害宴宵家容宿寂寄密富寒寛寝察寡寢實寧審寫寬寮寶寸寺対寿封専射将將專尉尊尋對導小少尚尢就尸尺尻尼尽尾尿局居屆屈届屋屑展属層履屬屮屯山岐岡岩岬岳岸峠峡峰島峽崇崎崖崩嵐嶽巛川州巡巢巣工左巧巨差己巻巾市布帆希帝帥師席帯帰帳帶常帽幅幕幣干平年幸幹幺幻幼幽幾广庁広床序底店府度座庫庭庶康庸廃廉廊廢廣廳廴延廷建廾弁弄弊弋式弐弓弔引弟弥弦弧弱張強弾彈彌彐当彙彡形彩彫彰影彳役彼往征径待徊律後徐徑徒従得徘從御復循微徳徴徵德徹心必忌忍志忘忙応忠快念怒怖思怠急性怨怪恆恋恐恒恣恥恨恩恭息恵悔悟悠患悦悩悪悲悼情惑惚惜惠惡惧惨惰惱想愁愉意愚愛感愼慄慈態慌慎慕慘慢慣慨慮慰慶憂憎憤憧憩憬憲憶憾懇應懐懲懷懸戀戈成我戒戚戦戯戰戲戴戶戸戻戾房所扇扉手才打払扱扶批承技抄把抑投抗折抜択披抱抵抹押抽拂担拉拍拐拒拓拔拘拙招拜拝拠拡括拭拳拶拷拾持指挑挙挟挨挫振挾挿捉捕捗捜捨据捻掃授掌排掘掛採探接控推措掲描提插揚換握揭揮援揺損搖搜搬搭携搾摂摘摩摯撃撤撮撲擁擇擊操擔據擢擦擧擬擴攝支攴收改攻放政故效敍敏救敕敗教敢散敬数整敵敷數文斉斎斐斑斗料斜斤斥斬断新斷方施旅旋族旗无既日旦旧旨早旬旺昆昇明易昔星映春昧昨昭是昼時晚晝晩普景晰晴晶暁暇暑暖暗暦暫暮暴曆曇曉曖曜曰曲更書曹曽曾替最會月有服朕朗望朝期木未末本札朱朴机朽杉材村束条来杯東松板析枕林枚果枝枠枢枯架柄某染柔柱柳柵査柿栃栄栓校株核根格栽桁桃案桑桜桟梅梗條梨械棄棋棒棚棟棧森棺椅植椎検業極楷楼楽概榮構様槪槽樂樓標樞模樣権横樹橋機橫檢櫻欄權欠次欧欲欺款歌歐歓歡止正步武歩歯歳歴歷歸歹死殉殊残殖殘殳殴段殺殻殼殿毀毆毋母毎每毒比毛氏民气気氣水氷永氾汁求汎汗汚江池汰決汽沃沈沒沖沙没沢河沸油治沼沿況泉泊泌法泡波泣泥注泰泳洋洗洞津洪活派流浄浅浜浦浪浮浴海浸消涉涙涜涯液涼淑淚淡淨淫深混淺添清渇済渉渋渓減渡渦温測港渴湖湧湯湾湿満源準溜溝溪溫溶溺滅滋滑滝滞滯滴滿漁漂漆漏演漠漢漫漬漸潔潛潜潟潤潮潰澁澄澤激濁濃濕濟濫濯濱瀧瀨瀬灣火灯灰災炉炊炎炭点為烈無焦然焼煎煙照煩煮熊熟熱燃燈燒營燥爆爐爪爭爲爵父爻爽片版牙牛牧物���特犠犧犬犯状狀狂狙狩独狭狹猛猟猫献猶猿獄獣獨獲獵獸獻玄率玉王玩珍珠班現球理琴瑠璃璧環璽瓜瓣瓦瓶甁甘甚生産用田由甲申男町画界畏畑畔留畜畝略番畫異畳當畿疊疋疎疑疒疫疲疾病症痕痘痛痢痩痴瘍瘦療癒癖癡癶発登發白百的皆皇皮皿盆益盗盛盜盟盡監盤目盲直相盾省眉看県眞真眠眺眼着睡督睦瞬瞭瞳矛矢知短矯石砂研砕砲破硏硝硫硬碁碎碑確磁磨礁礎示礼社祈祉祕祖祝神祥票祭禁禅禍福禪禮禾秀私秋科秒秘租秩称移程税稚種稱稲稻稼稽稿穀穂積穏穗穩穫穴究空突窃窒窓窟窮窯竊立竜竝章童端競竹笑笛符第筆等筋筒答策箇箋算管箱箸節範築篤簡簿籍籠米粉粋粒粗粘粛粧粹精糖糧糸系糾紀約紅紋納純紙級紛素紡索紫累細紳紹紺終組経結絕絞絡給統絲絵絶絹經継続綠維綱網綻綿緊総緑緒緖線締緣編緩緯練緻縁縄縛縣縦縫縮縱總績繁繊繋織繕繩繪繭繰繼續纖缶缺罐网罠罪置罰署罵罷羅羊美羞群羨義羽翁翌習翻翼老考者而耐耒耕耗耳聖聞聲聴職聽聿肅肉肌肖肘肝股肢肥肩肪肯育肺胃胆背胎胞胴胸能脂脅脇脈脊脚脱脳腎腐腕腦腫腰腸腹腺膚膜膝膨膳膽臆臓臟臣臨自臭至致臺臼與興舊舌舍舎舗舛舞舟航般舶舷船艇艦艮良色艶艷艸芋芝芯花芳芸芽苗苛若苦英茂茎茨茶草荒荘荷莊莖菊菌菓菜華萎萬落葉著葛葬蒸蓄蓋蔑蔵蔽薄薦薪薫薬薰藍藏藝藤藥藩藻虍虎虐處虚虛虜虞號虫虹蚊蚕蛇蛍蛮蜂蜜融螢蟲蠶蠻血衆行術街衛衝衞衡衣表衰衷袋袖被裁裂装裏裕補裝裸製裾複褐褒襃襟襲襾西要覆覇見規視覚覧親観覺覽觀角解触觸言訂訃計討訓託記訟訪設許訳訴診証詐詔評詞詠詣試詩詮詰話該詳誇誉誌認誓誕誘語誠誤説読誰課調談請論諦諧諭諮諸諾謀謁謄謎謙講謝謠謡謹證識譜警譯議譲護譽讀變讓谷豆豊豐豕豚象豪豫豸貌貝貞負財貢貧貨販貪貫責貯貳貴買貸費貼貿賀賂賃賄資賊賓賛賜賞賠賢賣賦質賭賴購贈贊赤赦走赴起超越趣足距跡路跳践踊踏踐踪蹴躍身車軌軍軒軟転軸軽較載輕輝輩輪輸轄轉辛辞辣辨辭辯辰辱農辵辺込辿迅迎近返迫迭述迷追退送逃逆透逐逓途通逝速造連逮週進逸遂遅遇遊運遍過道達違遜遞遠遡遣適遭遮遲遵遷選遺避還邊邑那邦邪邸郊郎郞郡部郭郵郷都鄕酉酌配酎酒酔酢酪酬酵酷酸醉醒醜醫醸釀釆采釈釋里重野量金釜針釣鈍鈴鉄鉛鉢鉱銀銃銅銘銭鋭鋳鋼錄錠錢錦錬錮錯録鍊鍋鍛鍵鎌鎖鎭鎮鏡鐘鐵鑄鑑鑛長門閉開閑間関閣閥閲闇闘關阜阪防阻附降限陛院陣除陥陪陰陳陵陶陷陸険陽隅隆隊階随隔隙際障隠隣隨險隱隶隷隹隻雄雅集雇雌雑雙雜離難雨雪雰雲零雷電需震霊霜霧露霸靈靑青静靜非面革靴韋韓音韻響頁頂頃項順須預頑頒頓領頭頰頻頼題額顎顔顕願類顧顯風飛飜食飢飯飲飼飽飾餅養餌餓餘餠館首香馬駄駅駆駐駒騎騒験騰騷驅驗驚驛骨骸髄髓體高髟髪髮鬥鬭鬯鬱鬼魂魅魔魚鮮鯨鳥鳴鶏鶴鷄鹵鹽鹿麓麗麥麦麵麺麻黃黄黑黒默黙點黨鼓鼻齊齋齒齡齢龍龜𠠀欄廊朗虜殺類隆塚神祥福諸都侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海漢煮碑社祉祈祖祝禍穀突節練繁署者臭著褐視謁謹賓贈逸難響頻︎️﹁﹂﹏!(),0123456789:;?[]{}~・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�
+nano wait.sh
-ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅓㅔㅕㅗㅘㅛㅜㅠㅡㅢㅣㅿㆁㆆㆍ가각갂간갇갈갉감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹걀걔거걱건걷걸걹검겁것겄겅겆겉겊겋게겐겔겜겟겠겡겨격겪견겯결겸겹겼경곁계곗고곡곤곧골곪곬곯곰곱곳공곶곺과곽관괄괌괍괏광괘괙괜괠괨괩괭괴괵괸괼굄굉교구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궝궤궹귀귄귈귐귑귓귕규균귤귬그극근귿글긁긇금급긋긍긎긏긑긔기긱긴긷길김깁깃깄깅깊까깍깎깐깔깜깝깟깠깡깢깥깨깩깬깰깸깹깻깼깽꺄꺅꺼꺽꺾껀껄껌껍껏껐껑께껜껭껴꼉꼍꼬꼭꼰꼴꼼꼽꼿꽁꽂꽃꽈꽉꽌꽐꽘꽜꽝꽤꽥꽹꾀꾄꾈꾐꾕꾜꾸꾹꾼꾿꿀꿇꿈꿉꿋꿍꿎꿔꿘꿩꿰뀀뀌뀍뀐뀔뀜뀝뀨끄끅끈끊끌끓끔끕끗끙끝끠끼끽낀낄낌낍낏낐낑나낙낚난낟날낡남납낫났낭낮낯낱낳내낵낸낻낼냄냅냇냈냉냐냑냠냥냬너넉넋넌넏널넓넘넙넛넜넝넞넣네넥넨넬넴넵넷녀녁년념녑녓녔녕녘녜노녹녺논놀놈놉놋농높놓놔놨뇌뇐뇔뇜뇨뇽누눅눈눋눌눓눔눕눗눠눳눴뉘뉜뉠뉨뉩뉴늄늉느늑는늘늙늠늡능늦늪늬니닉닌닐님닙닛닝닢다닥닦단닫달닭닮닳담답닷당닺닻닿대댁댄댈댐댑댓댔댕더덕던덛��덟덤덥덧덨덩덪덫덮데덱덴델뎀뎃뎅뎌도독돈돋돌돐돔돕돗동돛돼됀됐되된될됨됩됫됬두둑둔둘둠둡둣둥둬뒀뒈뒤뒷듀듈듐드득든듣들듬듭듯등디딕딘딛딜딤딥딧딨딩딪따딱딲딴딷딸땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떫떰떱떳떴떵떻떼뗀뗄뗌뗏뗑또똑똔똘똥뙤뚜뚝뚤뚫뚬뚱뛰뛴뛸뜀뜁뜨뜩뜬뜯뜰뜸뜹뜻띄띈띠띤띨띰띱띵라락란랄람랍랏랐랑랗래랙랜랠램랩랫랬랭랴략량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례로록론롤롬롭롯롱뢰료룡루룩룬룰룸룹룻룽뤄뤼류륙륜률륨륭르륵른를름릅릇릉릎리릭린릴림립릿링맄마막만많맏말맑맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀머먹먼멀멈멉멋멍멎멓메멕멘멜멤멥멧며멱면멸몃몄명몇모목몫몬몰몸몹못몽뫃뫼묏묘무묵묶문묻물묽뭄뭇뭉뭍뭏뭐뭔뭘뭡뭣뮈뮌뮤뮬뮴므믄믈믐미믹민믿밀밈밉밋밌밍및밑바박밖반받발밝밟밤밥밧방밭배백밴밷밸뱀뱁뱃뱄뱅버벅번벋벌범법벗벘벙벚베벡벤벧벨벰벱벳벵벼벽변별볌볍볏볐병볒볕보복볶본볼봄봅봇봉봐봔봤뵈뵉뵌뵐뵘뵙뵤부북분붇불붉붐붑붓붕붙붜뷔뷰브븍븐블븜븝븟비빅빈빋빌빎빔빕빗빙빚빛빠빡빤빨빰빱빳빴빵빻빼빽뺀뺄뺌뺏뺐뺑뺘뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼈뼉뼘뼝뽀뽁뽄뽈뽐뽑뽕뾰뿀뿅뿌뿍뿐뿔뿜뿝뿡쁘쁙쁜쁠쁨쁩삐삑삔삘삠삣삥사삭삮삯산삳살삵삶삼삽삿샀상샅새색샌샏샐샘샙샛샜생샤샥샨샬샴샷샹서석섞선섣설섥섦섧섪섬섭섯섰성섶세섹센셀셈셉셋셍셑셔션셜셧셨셰소속솎손솔솜솝솟송솥솨솩솰쇄쇈쇗쇠쇤쇨쇰쇱쇳쇼쇽숀숄숍수숙순숟술숨숩숫숭숯숱숲숴쉐쉘쉬쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싼쌀쌈쌉쌋쌌쌍쌓쌔쌕쌘쌜쌤쌧쌨쌩쌰썃썅써썩썬썰썲썸썹썼썽쎄쎈쎙쏘쏙쏜쏟쏠쏨쏭쏴쏵쐐쐬쐰쐴쐼쐿쑤쑥쑨쑬쑴쑹쒀쒔쓔쓕쓰쓱쓴쓸씀씁씌씐씨씩씬씰씸씹씻씽아악안앉않알앍앎앏앒앓암압앗았앙앞앟애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏얐양얕얗얘얜얫얱어억얶언얹얺얻얼얽엄업없엇었엉엊엌엎에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옆옇예옌옐옛옜옝오옥온올옭옮옳옴옵옷옹옺옻와왁완왈왐왑왓왔왕왜왝왠왱외왹왼욀욈욋욍요욕욘욥욧용우욱운욷울욹욺움웁웃웅워웍원월웜웝웟웠웡웨웩웬웰웸웹웽위윅윈윌윔윗윙유육윤율윰윳융윷으윽은을읊음읍응의이익인일읽잃임입잇있잉잊잎자작잔잖잘잠잡잣잤장잦잧재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟘저적전절젊점접젓젔정젖제젝젠젤젬젭젯져젼졌조족존졸졺좀좁종좆좇좋좌좍좐좔좜좝좟좠좨좬좰좸죄죈죌죔죕죗죠죤죰죱죵주죽준줄줆줌줍줏중줘줬쥐쥔쥘쥠쥡쥬쥰쥴즈즉즌즐즘즙증지직진짇질짊짐집짓징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨘쩌쩍쩐쩔쩜쩝쩡쪄쪘쪼쪽쫀쫄쫌쫍쫑쫒쫓쫘쫙쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쮸쯔쯤쯧찌찍찐찔찜찝찡찢찧차착찬찮찯찰참찹찻찼창찾찿채책챈챌챔챕챘챙챠챤챰챱처척천철첨첩첫청체첵첸첼쳇쳐쳤초촉촌촐촘촙촛총촬최쵸추축춘출춤춥춧충춰췄췌취츄츠측츰층치칙친칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캥캬캭커컨컬컴컵컷컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾍쾡쾰쿄쿠쿡쿤쿨쿰쿳쿵쿼퀘퀭퀴퀵퀸큐크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱터턱턴털텀텁텃텄텅테텍텐텔템텝텟텠텡텨토톡톤톨톰톱톳통퇘퇴퇸투툭툰툴툼툽툿퉁퉤퉷튀튄튈튐튑튓튕튜튬트특튼튿틀틈틉틋틔티틱틴틸팀팁팅파팍팎판팔팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴펵편펼폄폅폈평폐포폭폰폴폼폽폿퐁푀푄표푯푸푹푼풀품풉풋풍퓌퓨프픈플픔픕피픽핀필핌핍핏핑하학한할핥함합핫핬항핱해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜호혹혼홀홈홉홋홍화확환활홧황홰홱횃회획횟횡효후훅훈훌훑훔훗훠훤훨훰훼휀휑휘휙휜휠휨휩휭휴휼흄흉흐흑흔흗흘흙흠흡흣흥흩희흰흴히힉힌힐힘힙힛힝︎️
+Paste in the following:
-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ÆⱭÐƎƏƐƔIJƖŊŒƆƱ‘ẞÞƲǷȜƷʔæɑðǝəɛɣıijɩŋœɔʊĸſßþʋƿȝʒôĄ̧ƁÇĐƊƉĘȨƑǤĦꞪĮƗƘŁƝǪØƠɌŞŢŦŲƯɄ̨ƳąɓçđɗɖęȩƒǥħɦįɨƙłɲǫøơɍşţŧųưʉƴäëÁÀÂÄǍĂĀÃÅǺǼǢĆĊĈČĎḌÉÈĖÊËĚĔĒẼẸĠĜǦĞ̃ĢáàâǎăāãåǻǽǣćċĉčďḍéèėêěĕēẽẹġĝǧğģíüõĤḤÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿʼŃ̈ŇÑŅÓÒÔÖǑŎŌÕŐỌǾĥḥìîïǐĭīĩịĵķǩĺļľŀʼnńňñņóòöǒŏōőọǿḶŔŘŖŚŜŠȘṢŤȚṬÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮŕřŗśŝšșṣťțṭúùûǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯ
+#!/bin/bash
+wait 1234
+echo “Done”
-!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`AaBbCcDdEeFfGgHhIiİJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿×ßÀàÁáÂâÃãÄäÅåÆæÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖö÷ØøÙùÚúÛûÜüÝýÞþÿŸĀāĂ㥹ĆćĊċČčĎďĒēĖėĘęĚěĞğĠġĢģĦħĪīĮįıIJijĶķĹĺĻļĽľŁłŃńŅņŇňŐőŒœŔŕŘřŚśŞşŠšŤťŪūŮůŰűŲųŹźŻżŽžƒDždžDzdzȚțˇ˘˙˛˜;΄΅·ΐΆάΈέΉήΊίΰΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρςΣσΤτΥυΦφΧχΨψΩωΪϊΫϋΌόΎύΏώАаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяЁё–—‘‚‛“”„†‡•…‰′″‹›※€№™←↑→↓⇒⇔∀∂√∞∴∵⊂⊃⌒■□▲△▼▽◆◇○◎●★☆♀♂♪♭ 、。〃々〆「」『』【】〒ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわをんゝゞァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヲンヴヵヶ・ー仝!?~
+Important! If no job ID is provided, the wait command waits until all child background jobs are completed.
+5. Comments
+Users can easily add comments to their bash scripts with the # symbol. It is extra useful if you’ve got a lengthy script that needs explaining on some lines.
+Begin by creating a new bash script:
-repo_name,path,size,content,license
-gameclosure/jsiohint,tests/cli.js,37060,"""use strict"";
+nano comments.sh
-var path = require(""path"");
-var shjs = require(""shelljs"");
-var sinon = require(""sinon"");
+Then paste in the following:
-var cliPath = path.resolve(__dirname, ""../src/cli.js"");
-var cli;
+#!/bin/bash
+# Define a variable named Hostinger
+provider="Hostinger"
+# Print out the following text
+echo 'The best hosting provider is $provider'
+# Print out the following text with $provider variable value
+echo "The best hosting provider is $provider"
-exports.setUp = function(done) {
- this.sinon = sinon.sandbox.create();
+The command-line window showing single line comment functionality. It's worth noting that bash comments are not displayed with the script output.
- // The CLI module maintains some internal state in order to optimize
- // filesystem operations. This state can lead to undesirable test case
- // interdependencies. While re-loading the CLI module for every test may
- // negatively effect the execution time of this test suite, it is the most
- // maintainable way to avoid any current or future problems relating to
- // shared internal state.
- cli = require(""../src/cli.js"");
+Keep in mind that bash comments are only visible on a text editor.
+6. Get User Input
- done();
-};
+To take input from users, we’ll use the read bash command. First, create a new bash shell file:
-exports.tearDown = function(done) {
- this.sinon.restore();
+nano read.sh
- cli = null;
- delete require.cache[cliPath];
+Then, fill it with the script below:
- done();
-};
+#!/bin/bash
+echo "What is your age?"
+read age
+echo "Wow, you look younger than $age years old"
-exports.group = {
- setUp: function (cb) {
- this.sinon.stub(cli, ""exit"");
- cb();
- },
+In the above example, an age value was entered by the user. The output was then printed via the echo command.
+7. Loops
- config: {
- setUp: function (done) {
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file\.js$/))
- .returns(""var a = function () {}; a();"")
- .withArgs(sinon.match(/file1\.json$/))
- .returns(""wat"")
- .withArgs(sinon.match(/file2\.json$/))
- .returns(""{\""node\"":true,\""globals\"":{\""foo\"":true,\""bar\"":true}}"")
- .withArgs(sinon.match(/file4\.json$/))
- .returns(""{\""extends\"":\""file3.json\""}"")
- .withArgs(sinon.match(/file5\.json$/))
- .returns(""{\""extends\"":\""file2.json\""}"")
- .withArgs(sinon.match(/file6\.json$/))
- .returns(""{\""extends\"":\""file2.json\"",\""node\"":false}"")
- .withArgs(sinon.match(/file7\.json$/))
- .returns(""{\""extends\"":\""file2.json\"",\""globals\"":{\""bar\"":false,\""baz\"":true}}"")
- .withArgs(sinon.match(/file8\.json$/)).returns(JSON.stringify({
- extends: ""file7.json"",
- overrides: {
- ""file.js"": {
- globals: {
- foo: true,
- bar: true
- }
- }
- }
- }))
- .withArgs(sinon.match(/file9\.json$/)).returns(JSON.stringify({
- extends: ""file8.json"",
- overrides: {
- ""file.js"": {
- globals: {
- baz: true,
- bar: false
- }
- }
- }
- }));
-
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/file1\.json$/)).returns(true)
- .withArgs(""-e"", sinon.match(/file2\.json$/)).returns(true)
- .withArgs(""-e"", sinon.match(/file3\.json$/)).returns(false)
- .withArgs(""-e"", sinon.match(/file4\.json$/)).returns(true)
- .withArgs(""-e"", sinon.match(/file5\.json$/)).returns(true)
- .withArgs(""-e"", sinon.match(/file6\.json$/)).returns(true);
-
- var _cli = require(""cli"");
- this.out = this.sinon.stub(_cli, ""error"");
-
- done();
- },
+A loop is an essential tool in various programming languages. To put it simply, a bash loop is a set of instructions that are repeated until a user-specified condition is reached. Start by creating a loop bash program:
- normal: function (test) {
- this.sinon.stub(cli, ""run"").returns(true);
-
- // Merges existing valid files
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file5.json""
- ]);
- test.equal(cli.run.lastCall.args[0].config.node, true);
- test.equal(cli.run.lastCall.args[0].config['extends'], void 0);
-
- // Overwrites options after extending
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file6.json""
- ]);
- test.equal(cli.run.lastCall.args[0].config.node, false);
-
- // Valid config
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file2.json""
- ]);
-
- // Performs a deep merge of configuration
- cli.interpret([
- ""node"", ""jshint"", ""file2.js"", ""--config"", ""file7.json""
- ]);
- test.deepEqual(cli.run.lastCall.args[0].config.globals, { foo: true, bar: false, baz: true });
-
- // Performs a deep merge of configuration with overrides
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file8.json""
- ]);
- test.deepEqual(cli.run.lastCall.args[0].config.overrides[""file.js""].globals, { foo: true, bar: true });
-
- // Performs a deep merge of configuration with overrides for the same glob
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file9.json""
- ]);
- test.deepEqual(cli.run.lastCall.args[0].config.overrides[""file.js""].globals, { foo: true, bar: false, baz: true });
-
- test.done();
- },
+nano whileloop.sh
- failure: function (test) {
- var out = this.out;
- cli.exit.throws(""ProcessExit"");
-
- // File doesn't exist.
- try {
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file3.json""
- ]);
- } catch (err) {
- var msg = out.args[0][0];
- test.equal(msg.slice(0, 23), ""Can't find config file:"");
- test.equal(msg.slice(msg.length - 10), ""file3.json"");
- test.equal(err, ""ProcessExit"");
- }
+Then paste in the following:
- // Invalid config
- try {
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file1.json""
- ]);
- } catch (err) {
- var msg = out.args[1][0];
- test.equal(msg.slice(0, 24), ""Can't parse config file:"");
- test.equal(msg.slice(25, 35), ""file1.json"");
- test.equal(msg.slice(msg.length - 37), ""Error:SyntaxError: Unexpected token w"");
- test.equal(err, ""ProcessExit"");
- }
+#!/bin/bash
+n=0
+while :
+do
+echo Countdown: $n
+((n++))
+done
- // Invalid merged filed
- try {
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""file4.json""
- ]);
- } catch (err) {
- var msg = out.args[2][0];
- test.equal(msg.slice(0, 23), ""Can't find config file:"");
- test.equal(msg.slice(msg.length - 10), ""file3.json"");
- test.equal(err, ""ProcessExit"");
- }
+This will work as a countdown to infinity until you press CTRL + C to stop the script.
+Now that we’ve tested the while loop, we can move on to the for loop. Create a bash file for it:
- test.done();
- }
- },
+nano forloop.sh
- testPrereq: function (test) {
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file\.js$/)).returns(""a();"")
- .withArgs(sinon.match(/prereq.js$/)).returns(""var a = 1;"")
- .withArgs(sinon.match(/config.json$/))
- .returns(""{\""undef\"":true,\""prereq\"":[\""prereq.js\"", \""prereq2.js\""]}"");
+It should contain the script below:
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/prereq.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/config.json$/)).returns(true);
+#!/bin/bash
+for (( n=2; n<=10; n++ ))
+do
+echo "$n seconds"
+done
- cli.exit.withArgs(0).returns(true)
- .withArgs(2).throws(""ProcessExit"");
+A bash script showcasing the "for" loop
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--config"", ""config.json""
- ]);
+The script prints out numbers from 2 to 10 while adding the seconds keyword to it.
+8. Create an Array
- shjs.cat.restore();
- shjs.test.restore();
+A bash array is a data structure designed to store information in an indexed way. It is extra useful if users need to store and retrieve thousands of pieces of data fast. What makes bash arrays special is that unlike any other programming language, they can store different types of elements. For example, you can use a bash array to store both strings and numbers.
- test.done();
- },
+Create a new file in the current directory:
- // CLI prereqs
- testPrereqCLIOption: function (test) {
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file\.js$/)).returns(""a();"")
- .withArgs(sinon.match(/prereq.js$/)).returns(""var a = 1;"")
- .withArgs(sinon.match(/config.json$/)).returns(""{\""undef\"":true}"");
-
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/prereq.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/config.json$/)).returns(true);
-
- cli.exit.restore();
- this.sinon.stub(cli, ""exit"")
- .withArgs(0).returns(true)
- .withArgs(2).throws(""ProcessExit"");
-
- cli.interpret([
- ""node"", ""jshint"", ""file.js"",
- ""--config"", ""config.json"",
- ""--prereq"", ""prereq.js , prereq2.js""
- ]);
-
- shjs.cat.restore();
- shjs.test.restore();
-
- test.done();
- },
+nano array.sh
- // CLI prereqs should get merged with config prereqs
- testPrereqBothConfigAndCLIOption: function (test) {
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file\.js$/)).returns(""a(); b();"")
- .withArgs(sinon.match(/prereq.js$/)).returns(""var a = 1;"")
- .withArgs(sinon.match(/prereq2.js$/)).returns(""var b = 2;"")
- .withArgs(sinon.match(/config.json$/))
- .returns(""{\""undef\"":true,\""prereq\"":[\""prereq.js\""]}"");
-
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/prereq.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/prereq2.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/config.json$/)).returns(true);
-
- cli.exit.restore();
- this.sinon.stub(cli, ""exit"")
- .withArgs(0).returns(true)
- .withArgs(2).throws(""ProcessExit"");
-
- cli.interpret([
- ""node"", ""jshint"", ""file.js"",
- ""--config"", ""config.json"",
- ""--prereq"", ""prereq2.js,prereq3.js""
- ]);
-
- shjs.cat.restore();
- shjs.test.restore();
-
- test.done();
- },
+Combine the freshly learned for loop with a new indexed array:
- testOverrides: function (test) {
- var dir = __dirname + ""/../examples/"";
- var rep = require(""../examples/reporter.js"");
- var config = {
- ""asi"": true,
- ""overrides"": {
- ""bar.js"": {
- ""asi"": false
- }
- }
- };
-
- this.sinon.stub(process, ""cwd"").returns(dir);
- this.sinon.stub(rep, ""reporter"");
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/foo\.js$/)).returns(""a()"")
- .withArgs(sinon.match(/bar\.js$/)).returns(""a()"")
- .withArgs(sinon.match(/config\.json$/))
- .returns(JSON.stringify(config));
-
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/foo\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/bar\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/config\.json$/)).returns(true);
-
- cli.exit.withArgs(0).returns(true)
- .withArgs(1).throws(""ProcessExit"");
-
- // Test successful file
- cli.interpret([
- ""node"", ""jshint"", ""foo.js"", ""--config"", ""config.json"", ""--reporter"", ""reporter.js""
- ]);
- test.ok(rep.reporter.args[0][0].length === 0);
-
- // Test overriden, failed file
- cli.interpret([
- ""node"", ""jshint"", ""bar.js"", ""--config"", ""config.json"", ""--reporter"", ""reporter.js""
- ]);
- test.ok(rep.reporter.args[1][0].length > 0, ""Error was expected but not thrown"");
- test.equal(rep.reporter.args[1][0][0].error.code, ""W033"");
-
- test.done();
- },
+#!/bin/bash
+# Create an indexed array
+IndexedArray=(egg burger milk)
+#Iterate over the array to get all the values
+for i in "${IndexedArray[@]}";do echo "$i";done
- testOverridesMatchesRelativePaths: function (test) {
- var dir = __dirname + ""/../examples/"";
- var rep = require(""../examples/reporter.js"");
- var config = {
- ""asi"": true,
- ""overrides"": {
- ""src/bar.js"": {
- ""asi"": false
- }
- }
- };
+A bash script to create and print out an array
- this.sinon.stub(process, ""cwd"").returns(dir);
- this.sinon.stub(rep, ""reporter"");
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/bar\.js$/)).returns(""a()"")
- .withArgs(sinon.match(/config\.json$/))
- .returns(JSON.stringify(config));
+The script iterates over the IndexedArray and prints out all the values.
+9. Conditional Statements
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/bar\.js$/)).returns(true)
- .withArgs(""-e"", sinon.match(/config\.json$/)).returns(true);
+The most popular and widely used conditional statement is if. Even though the if statement is easy to write and understand, it can be used in advanced shell scripts as well.
- cli.exit.withArgs(0).returns(true)
- .withArgs(1).throws(""ProcessExit"");
+Begin with a new bash file:
- cli.interpret([
- ""node"", ""jshint"", ""./src/bar.js"", ""--config"", ""config.json"", ""--reporter"", ""reporter.js""
- ]);
- test.ok(rep.reporter.args[0][0].length === 1);
+nano if.sh
- test.done();
- },
+Paste the code below in it:
- testReporter: function (test) {
- test.expect(5);
-
- var _cli = require(""cli"");
- var rep = require(""../examples/reporter.js"");
- var run = this.sinon.stub(cli, ""run"");
- var out = this.sinon.stub(_cli, ""error"");
- var dir = __dirname + ""/../examples/"";
- this.sinon.stub(process, ""cwd"").returns(dir);
-
- cli.exit.throws(""ProcessExit"");
-
- // Test failed attempt.
- try {
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--reporter"", ""invalid.js""
- ]);
- } catch (err) {
- var msg = out.args[0][0];
- test.equal(msg.slice(0, 25), ""Can't load reporter file:"");
- test.equal(msg.slice(msg.length - 10), ""invalid.js"");
- test.equal(err, ""ProcessExit"");
- }
+#!/bin/bash
+salary=1000
+expenses=800
+#Check if salary and expenses are equal
+if [ $salary == $expenses ];
+then
+ echo "Salary and expenses are equal"
+#Check if salary and expenses are not equal
+elif [ $salary != $expenses ];
+then
+ echo "Salary and expenses are not equal"
+fi
- // Test successful attempt.
- run.restore();
- this.sinon.stub(rep, ""reporter"");
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file\.js$/)).returns(true);
-
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file\.js$/)).returns(""func()"");
-
- try {
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--reporter"", ""reporter.js""
- ]);
- } catch (err) {
- if (err.name !== ""ProcessExit"") {
- throw err;
- }
+This script creates two new variables and compares whether they are equal or not.
+10. Functions
- test.equal(rep.reporter.args[0][0][0].error.raw, ""Missing semicolon."");
- test.ok(rep.reporter.calledOnce);
- }
+A bash function is a set of commands that can be reused numerous times throughout a bash script. Create a new file:
- test.done();
- },
+nano function.sh
- testJSLintReporter: function (test) {
- var rep = require(""../src/reporters/jslint_xml.js"");
- var run = this.sinon.stub(cli, ""run"");
+Then, paste in the following code – it creates a simple Hello World function.
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--reporter"", ""jslint""
- ]);
- test.equal(run.args[0][0].reporter, rep.reporter);
+#!/bin/bash
+hello () {
+ echo 'Hello World!'
+}
+hello
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--jslint-reporter""
- ]);
- test.equal(run.args[1][0].reporter, rep.reporter);
+11. Display String Length
- test.done();
- },
+There are a couple of ways of counting string length in bash. We’ll talk about the simplest. Create a file named stringlength.sh:
- testCheckStyleReporter: function (test) {
- var rep = require(""../src/reporters/checkstyle.js"");
- var run = this.sinon.stub(cli, ""run"");
+nano stringlength.sh
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--reporter"", ""checkstyle""
- ]);
- test.equal(run.args[0][0].reporter, rep.reporter);
+Fill it with the following:
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--checkstyle-reporter""
- ]);
- test.equal(run.args[1][0].reporter, rep.reporter);
+#!/bin/bash
+# Create a new string
+mystring="lets count the length of this string"
+i=${#mystring}
+echo "Length: $i"
- test.done();
- },
+Here, the # operator is used to get the length of the string variable.
+12. Extract String
- testShowNonErrors: function (test) {
- var rep = require(""../src/reporters/non_error.js"");
- var run = this.sinon.stub(cli, ""run"");
+If users need to remove unnecessary parts from strings, they can use the Bash string extraction tools. Start by creating a new bash script:
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--show-non-errors""
- ]);
- test.equal(run.args[0][0].reporter, rep.reporter);
+nano extractstring.sh
- test.done();
- },
+The following script has 4 values, 3 of them being strings. In our example, we will extract only the number value. This can be done via the cut command. First, we instruct the command that each variable is separated by a comma by using the -d flag. Then we ask the cut command to extract the 5th value.
- testExtensions: function (test) {
- var run = this.sinon.stub(cli, ""run"");
+#!/bin/bash
+cut -d , -f 5 <<< "Website,Domain,DNS,SMTP,5005"
- cli.interpret([
- ""node"", ""jshint"", ""file.js""
- ]);
- test.equal(run.args[0][0].extensions, """");
+In another example, we have a string that is mixed with some numbers. We will use expr substr commands to extract only the Hostinger text value.
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--extra-ext"", "".json""
- ]);
- test.equal(run.args[1][0].extensions, "".json"");
+#!/bin/bash
+expr substr "458449Hostinger4132" 7 9
- test.done();
- },
+13. Find and Replace String
- testMalformedNpmFile: function (test) {
- this.sinon.stub(process, ""cwd"").returns(__dirname);
- var localNpm = path.normalize(__dirname + ""/package.json"");
- var localRc = path.normalize(__dirname + ""/.jshintrc"");
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+Another useful bash script for strings is find and replace. Create a file named findreplace.sh:
- // stub rc file
- testStub.withArgs(""-e"", localRc).returns(true);
- catStub.withArgs(localRc).returns('{""evil"": true}');
+nano findreplace.sh
- // stub npm file
- testStub.withArgs(""-e"", localNpm).returns(true);
- catStub.withArgs(localNpm).returns('{'); // malformed package.json
+Then paste in the following bash script:
- // stub src file
- testStub.withArgs(""-e"", sinon.match(/file\.js$/)).returns(true);
- catStub.withArgs(sinon.match(/file\.js$/)).returns(""eval('a=2');"");
+#!/bin/bash
+first="I drive a BMW and Volvo"
+second="Audi"
+echo "${first/BMW/"$second"}"
- cli.interpret([
- ""node"", ""jshint"", ""file.js""
- ]);
- test.equal(cli.exit.args[0][0], 0); // lint with wrong package.json
+Find and replace script in bash
- test.done();
- },
+The find and replace functionality doesn’t require any special commands, it can all be done with string manipulation.
+14. Concatenate Strings
- testRcFile: function (test) {
- this.sinon.stub(process, ""cwd"").returns(__dirname);
- var localRc = path.normalize(__dirname + ""/.jshintrc"");
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+Concatenation is the term used for appending one string to the end of another string. Start by creating concatenation.sh file.
- // stub rc file
- testStub.withArgs(""-e"", localRc).returns(true);
- catStub.withArgs(localRc).returns('{""evil"": true}');
+nano concatenation.sh
- // stub src file
- testStub.withArgs(""-e"", sinon.match(/file\.js$/)).returns(true);
- catStub.withArgs(sinon.match(/file\.js$/)).returns(""eval('a=2');"");
+The most simple example would be the following:
- cli.interpret([
- ""node"", ""jshint"", ""file.js""
- ]);
- test.equal(cli.exit.args[0][0], 0); // eval allowed = rc file found
+#!/bin/bash
+firststring="The secret is..."
+secondstring="Bash"
+thirdstring="$firststring$secondstring"
+echo "$thirdstring"
- test.done();
- },
+The above script will connect the values of firststring and secondstring variables creating a whole new thirdstring.
- testHomeRcFile: function (test) {
- var homeRc = path.join(process.env.HOME || process.env.HOMEPATH, "".jshintrc"");
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+A more advanced example would look like this:
- // stub rc file
- testStub.withArgs(""-e"", homeRc).returns(true);
- catStub.withArgs(homeRc).returns('{""evil"": true}');
+#!/bin/bash
+firststring="The secret is..."
+firststring+="Bash"
+echo "$firststring"
- // stub src file (in root where we are unlikely to find a .jshintrc)
- testStub.withArgs(""-e"", sinon.match(/\/file\.js$/)).returns(true);
- catStub.withArgs(sinon.match(/\/file\.js$/)).returns(""eval('a=2');"");
+The script uses the += operator to join the strings. With this method, you can concatenate strings with only one variable.
+15. Check if a Number is Even or Odd
- cli.interpret([
- ""node"", ""jshint"", ""/file.js""
- ]);
- test.equal(cli.exit.args[0][0], 0); // eval allowed = rc file found
+Odd and even numbers can be easily divided using the if statement and some simple math. Create a file named evenoddnumbers.sh:
- test.done();
- },
+nano evenoddnumbers.sh
- testNoHomeDir: function (test) {
- var prevEnv = {};
+The script uses the read command to read user input and divides it by 2. If the answer is 0, the number is even.
- // Remove all home dirs from env.
- [ 'USERPROFILE', 'HOME', 'HOMEPATH' ].forEach(function (key) {
- prevEnv[key] = process.env[key];
- delete process.env[key];
- });
+#!/bin/bash
+read -p "Enter a number and I will check if its odd or even " mynumber
+if [ $((mynumber%2)) -eq 0 ]
+then
+echo "Your number is even"
+else
+echo "Your number is odd."
+fi
- this.sinon.stub(process, ""cwd"").returns(__dirname);
- var localRc = path.normalize(__dirname + ""/.jshintrc"");
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+16. Generate Factorial of Number
- // stub rc file
- testStub.withArgs(""-e"", localRc).returns(true);
- catStub.withArgs(localRc).returns('{""evil"": true}');
+The factorial of a number is the result of all positive descending integers. For example, the factorial of 5 would be 120:
- // stub src file
- testStub.withArgs(""-e"", sinon.match(/file\.js$/)).returns(true);
- catStub.withArgs(sinon.match(/file\.js$/)).returns(""eval('a=2');"");
+5! = 5*4*3*2*1 = 120
- cli.interpret([
- ""node"", ""jshint"", ""file.js""
- ]);
- test.equal(cli.exit.args[0][0], 0); // eval allowed = rc file found
+Factorial scrips are very useful for users learning about recursion. Start by creating a .sh file executable:
- test.done();
+factorial.sh
- // Restore environemnt
- Object.keys(prevEnv).forEach(function (key) {
- process.env[key] = prevEnv[key];
- });
- },
+The following script will ask the user to enter a number they want to get the factorial of and use a for loop to calculate it.
- testOneLevelRcLookup: function (test) {
- var srcDir = __dirname + ""../src/"";
- var parentRc = path.join(srcDir, "".jshintrc"");
+#!/bin/bash
+echo Enter the number you want to get factorial for
+read mynumber
+factorial=1
+for ((i=1;i<=mynumber;i++))
+do
+factorial=$(($factorial*$i))
+done
+echo $factorial
- var cliDir = path.join(srcDir, ""cli/"");
- this.sinon.stub(process, ""cwd"").returns(cliDir);
+The command-line window displaying shell script for getting factorial of a number
+17. Create Directories
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+It is effortless to create directories in bash unless you need to create a lot of directories quickly. In the following example, we will use the bash script to create a set of directories with the same subdirectories in each.
- // stub rc file
- testStub.withArgs(""-e"", parentRc).returns(true);
- catStub.withArgs(parentRc).returns('{""evil"": true}');
+First, create a file named directories.sh:
- // stub src file
- testStub.withArgs(""-e"", sinon.match(/file\.js$/)).returns(true);
- catStub.withArgs(sinon.match(/file\.js$/)).returns(""eval('a=2');"");
+nano directories.sh
- cli.interpret([
- ""node"", ""jshint"", ""file.js""
- ]);
- test.equal(cli.exit.args[0][0], 0); // eval allowed = rc file found
+Then paste in the following code:
- test.done();
- },
+#!/bin/bash
+mkdir -p {Math,English,Geography,Arts}/{notes,examresults,portfolio}
- testTargetRelativeRcLookup: function (test) {
- // working from outside the project
- this.sinon.stub(process, ""cwd"").returns(process.env.HOME || process.env.HOMEPATH);
- var projectRc = path.normalize(__dirname + ""/.jshintrc"");
- var srcFile = __dirname + ""/sub/file.js"";
- var testStub = this.sinon.stub(shjs, ""test"");
- var catStub = this.sinon.stub(shjs, ""cat"");
+The script creates 4 main directories: Math, English, Geography, and Arts. The Notes, examresults, and portfolio subdirectories are also created inside each.
- // stub rc file
- testStub.withArgs(""-e"", projectRc).returns(true);
- catStub.withArgs(projectRc).returns('{""evil"": true}');
+If you were to replace the / symbol in the middle with _, the script would look like this:
- // stub src file
- testStub.withArgs(""-e"", srcFile).returns(true);
- catStub.withArgs(srcFile).returns(""eval('a=2');"");
+#!/bin/bash
+mkdir -p {Math,English,Geography,Arts}_{notes,examresults,portfolio}
- cli.interpret([
- ""node"", ""jshint"", srcFile
- ]);
- test.equal(cli.exit.args[0][0], 0); // eval allowed = rc file found
+Here’s the output for it displaying a merge of the two directories:
+A bash script to create a lot of directories quickly. The first bash case statement indicates which interpreter to use
- test.done();
- },
+#!/bin/bash
+#Declare string S1
+S1="Bash"
+#Declare string S2
+S2="Scripting"
+if [ $S1 = $S2 ]; then
+ echo "Both Strings are equal"
+else
+ echo "Strings are NOT equal"
+fi
- testIgnores: function (test) {
- var run = this.sinon.stub(cli, ""run"");
- var dir = __dirname + ""/../examples/"";
- this.sinon.stub(process, ""cwd"").returns(dir);
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--exclude=exclude.js""
- ]);
+The following script will check to see if a file exists or not.
- test.equal(run.args[0][0].ignores[0], path.resolve(dir, ""exclude.js""));
- test.equal(run.args[0][0].ignores[1], path.resolve(dir, ""ignored.js""));
- test.equal(run.args[0][0].ignores[2], path.resolve(dir, ""another.js""));
+#!/bin/bash
+file="./file"
+if [ -e $file ]; then
+ echo "File exists"
+else
+ echo "File does not exist"
+fi
- run.restore();
- process.cwd.returns(__dirname + ""/../"");
+The result:
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file.js$/)).returns(""console.log('Hello');"")
- .withArgs(sinon.match(/\.jshintignore$/)).returns(""examples"");
+$ ./filetesting.sh
+File does not exist
+$ touch file
+$ ./filetesting.sh
+File exists
- test.equal(shjs.cat.args.length, 0);
+Similarly for example we can use while loop to check if file does not exist. This script will sleep until file does exist. Note bash negator ! which negates the -e option.
- test.done();
- },
+#!/bin/bash
- testExcludePath: function (test) {
- var run = this.sinon.stub(cli, ""run"");
- var dir = __dirname + ""/../examples/"";
- this.sinon.stub(process, ""cwd"").returns(dir);
+while [ ! -e myfile ]; do
+# Sleep until file does exists/is created
+sleep 1
+done
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""--exclude-path=../examples/.customignore""
- ]);
- test.equal(run.args[0][0].ignores[0], path.resolve(dir, ""exclude.js""));
+Bash Select
- run.restore();
- process.cwd.returns(__dirname + ""/../"");
+The select command allows us to prompt the user to make a selection.
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file.js$/)).returns(""console.log('Hello');"")
- .withArgs(sinon.match(/\.jshintignore$/)).returns(""examples"");
+#!/bin/bash
- test.equal(shjs.cat.args.length, 0);
+PS3='Choose one word: '
- test.done();
- },
+# bash select
+select word in "linux" "bash" "scripting" "tutorial"
+do
+ echo "The word you have selected is: $word"
+# Break, otherwise endless loop
+ break
+done
- testAPIIgnores: function (test) {
- var dir = __dirname + ""/../data/"";
- this.sinon.stub(process, ""cwd"").returns(dir);
- var result = null;
+exit 0
- cli.run({
- args: [dir + ""../tests/unit/fixtures/ignored.js""],
- cwd: dir + ""../tests/unit/fixtures/"",
- reporter: function (results) { result = results; }
- });
+The result:
- test.deepEqual(result, []);
+$ ./select.sh
+1) linux
+2) bash
+3) scripting
+4) tutorial
+Choose one word: 2
+The word you have selected is: bash
- test.done();
- },
+Case statement conditional
- testCollectFiles: function (test) {
- var gather = this.sinon.stub(cli, ""gather"");
- var args = [];
+The case statement makes it easy to have many different possibilities, whereas an if statement can get lengthy very quickly if you have more than a few possibilities to account for.
- gather.returns([]);
+#!/bin/bash
+echo "What is your preferred programming / scripting language"
+echo "1) bash"
+echo "2) perl"
+echo "3) phyton"
+echo "4) c++"
+echo "5) I do not know !"
+read case;
+#simple case bash structure
+# note in this case $case is variable and does not have to
+# be named case this is just an example
+case $case in
+ 1) echo "You selected bash";;
+ 2) echo "You selected perl";;
+ 3) echo "You selected phyton";;
+ 4) echo "You selected c++";;
+ 5) exit
+esac
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/.*/)).returns(true);
+The result:
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file2?\.js$/)).returns(""console.log('Hello');"")
- .withArgs(sinon.match(/ignore[\/\\]file\d\.js$/)).returns(""console.log('Hello, ignore me');"")
- .withArgs(sinon.match(/ignore[\/\\]dir[\/\\]file\d\.js$/)).returns(""print('Ignore me');"")
- .withArgs(sinon.match(/node_script$/)).returns(""console.log('Hello, ignore me');"")
- .withArgs(sinon.match(/\.jshintignore$/)).returns(path.join(""ignore"", ""**""));
+$ ./case.sh
+What is your preferred programming / scripting language
+1) bash
+2) perl
+3) phyton
+4) c++
+5) I do not know !
+3
+You selected phyton
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""file2.js"", ""node_script"", path.join(""ignore"", ""file1.js""),
- path.join(""ignore"", ""file2.js""), path.join(""ignore"", ""dir"", ""file1.js"")
- ]);
+Bash quotes and quotations
- args = gather.args[0][0];
+Quotations and quotes are important part of bash and bash scripting. Here are some bash quotes and quotations basics.
+Escaping Meta characters
- test.equal(args.args[0], ""file.js"");
- test.equal(args.args[1], ""file2.js"");
- test.equal(args.args[2], ""node_script"");
- test.equal(args.args[3], path.join(""ignore"", ""file1.js""));
- test.equal(args.args[4], path.join(""ignore"", ""file2.js""));
- test.equal(args.args[5], path.join(""ignore"", ""dir"", ""file1.js""));
- test.equal(args.ignores, path.resolve(path.join(""ignore"", ""**"")));
+Before we start with quotes and quotations we should know something about escaping meta characters. Escaping will suppress a special meaning of meta characters and therefore meta characters will be read by bash literally. To do this we need to use backslash \ character. Example:
- shjs.cat.restore();
+#!/bin/bash
- shjs.test.withArgs(""-d"", sinon.match(/src$/)).returns(true)
- .withArgs(""-d"", sinon.match(/src[\/\\]lib$/)).returns(true);
+#Declare bash string variable
+BASH_VAR="Bash Script"
- this.sinon.stub(shjs, ""ls"")
- .withArgs(sinon.match(/src$/)).returns([""lib"", ""file4.js""])
- .withArgs(sinon.match(/src[\/\\]lib$/)).returns([""file5.js""]);
+# echo variable BASH_VAR
+echo $BASH_VAR
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/file2?\.js$/)).returns(""console.log('Hello');"")
- .withArgs(sinon.match(/file3\.json$/)).returns(""{}"")
- .withArgs(sinon.match(/src[\/\\]file4\.js$/)).returns(""print('Hello');"")
- .withArgs(sinon.match(/src[\/\\]lib[\/\\]file5\.js$/)).returns(""print('Hello');"")
- .withArgs(sinon.match(/\.jshintignore$/)).returns("""");
+#when meta character such us "$" is escaped with "\" it will be read literally
+echo \$BASH_VAR
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""file2.js"", ""file3.json"", ""--extra-ext=json"", ""src""
- ]);
+# backslash has also special meaning and it can be suppressed with yet another "\"
+echo "\\"
- args = gather.args[1][0];
+Here’s what it looks like when we execute the script:
- test.equal(args.args.length, 4);
- test.equal(args.args[0], ""file.js"");
- test.equal(args.args[1], ""file2.js"");
- test.equal(args.args[2], ""file3.json"");
- test.equal(args.args[3], ""src"");
- test.equal(args.ignores, false);
+$ ./escape_meta.sh
+Bash Script
+$BASH_VAR
+\
- shjs.cat
- .withArgs(sinon.match(/reporter\.js$/)).returns(""console.log('Hello');"");
+Single quotes
- cli.interpret([
- ""node"", ""jshint"", ""examples""
- ]);
+Single quotes in bash will suppress special meaning of every meta characters. Therefore meta characters will be read literally. It is not possible to use another single quote within two single quotes not even if the single quote is escaped by backslash.
- args = gather.args[2][0];
+#!/bin/bash
- test.equal(args.args.length, 1);
- test.equal(args.args[0], ""examples"");
- test.equal(args.ignores.length, 0);
+# Declare bash string variable
+BASH_VAR="Bash Script"
- test.done();
- },
+# echo variable BASH_VAR
+echo $BASH_VAR
- testGatherOptionalParameters: function (test) {
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/file.js$/)).returns(true);
+# meta characters special meaning in bash is suppressed when using single quotes
+echo '$BASH_VAR "$BASH_VAR"'
- var files = cli.gather({
- args: [""file.js""]
- });
+The result:
- test.equal(files.length, 1);
- test.equal(files[0], ""file.js"");
+$ ./single_quotes.sh
+Bash Script
+$BASH_VAR "$BASH_VAR"
- test.done();
- },
+Double quotes
- testGather: function (test) {
- var dir = __dirname + ""/../examples/"";
- var files = [];
- this.sinon.stub(process, ""cwd"").returns(dir);
-
- var demoFiles = [
- [ /file2?\.js$/, ""console.log('Hello');"" ],
- [ /ignore[\/\\]file\d\.js$/, ""console.log('Hello, ignore me');"" ],
- [ /ignore[\/\\]dir[\/\\]file\d\.js$/, ""print('Ignore me');"" ],
- [ /node_script$/, ""console.log('Hello, ignore me');"" ]
- ];
-
- var testStub = this.sinon.stub(shjs, ""test"");
- demoFiles.forEach(function (file) {
- testStub = testStub.withArgs(""-e"", sinon.match(file[0])).returns(true);
- });
-
- var catStub = this.sinon.stub(shjs, ""cat"");
- demoFiles.forEach(function (file) {
- catStub = catStub.withArgs(sinon.match(file[0])).returns(file[1]);
- });
-
- files = cli.gather({
- args: [""file.js"", ""file2.js"", ""node_script"",
- path.join(""ignore"", ""file1.js""),
- path.join(""ignore"", ""file2.js""),
- path.join(""ignore"", ""dir"", ""file1.js"")
- ],
- ignores: [path.join(""ignore"", ""**"")],
- extensions: """"
- });
-
- test.equal(shjs.cat.args.length, 0);
- test.equal(files.length, 3);
- test.equal(files[0], ""file.js"");
- test.equal(files[1], ""file2.js"");
- test.equal(files[2], ""node_script"");
-
- demoFiles = [
- [ /file2?\.js$/, ""console.log('Hello');"" ],
- [ /file3\.json$/, ""{}"" ],
- [ /src[\/\\]file4\.js$/, ""print('Hello');"" ],
- [ /src[\/\\]lib[\/\\]file5\.js$/, ""print('Hello'); ""]
- ];
-
- demoFiles.forEach(function (file) {
- testStub = testStub.withArgs(""-e"", sinon.match(file[0])).returns(true);
- });
-
- testStub = testStub
- .withArgs(""-e"", sinon.match(/src$/)).returns(true)
- .withArgs(""-e"", sinon.match(/src[\/\\]lib$/)).returns(true)
- .withArgs(""-d"", sinon.match(/src$/)).returns(true)
- .withArgs(""-d"", sinon.match(/src[\/\\]lib$/)).returns(true);
-
- this.sinon.stub(shjs, ""ls"")
- .withArgs(sinon.match(/src$/)).returns([""lib"", ""file4.js""])
- .withArgs(sinon.match(/src[\/\\]lib$/)).returns([""file5.js""]);
-
- demoFiles.forEach(function (file) {
- catStub = catStub.withArgs(sinon.match(file[0])).returns(file[1]);
- });
-
- cli.interpret([
- ""node"", ""jshint"", ""file.js"", ""file2.js"", ""file3.json"", ""--extra-ext=json"", ""src""
- ]);
-
- files = cli.gather({
- args: [""file.js"", ""file2.js"", ""file3.json"", ""src""],
- extensions: ""json"",
- ignores: []
- });
-
- test.equal(shjs.cat.args.length, 5);
- test.equal(files.length, 5);
- test.equal(files[0], ""file.js"");
- test.equal(files[1], ""file2.js"");
- test.equal(files[2], ""file3.json"");
- test.equal(files[3], path.join(""src"", ""lib"", ""file5.js""));
- test.equal(files[4], path.join(""src"", ""file4.js""));
-
- shjs.test.restore();
- shjs.ls.restore();
- shjs.cat.restore();
- process.cwd.restore();
-
- this.sinon.stub(process, ""cwd"").returns(__dirname + ""/../"");
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/reporter\.js$/)).returns(""console.log('Hello');"");
-
- files = cli.gather({
- args: [""examples""],
- extensions: ""json"",
- ignores: []
- });
-
- test.equal(shjs.cat.args.length, 0);
- test.equal(files.length, 1);
- test.equal(files[0], path.join(""examples"", ""reporter.js""));
-
- test.done();
- },
+Double quotes in bash will suppress special meaning of every meta characters except $, \ and `. Any other meta characters will be read literally. It is also possible to use single quote within double quotes. If we need to use double quotes within double quotes bash can read them literally when escaping them with \. Example:
- testStatusCode: function (test) {
- var rep = require(""../examples/reporter.js"");
- var dir = __dirname + ""/../examples/"";
- this.sinon.stub(rep, ""reporter"");
- this.sinon.stub(process, ""cwd"").returns(dir);
+#!/bin/bash
- this.sinon.stub(shjs, ""test"")
- .withArgs(""-e"", sinon.match(/(pass\.js|fail\.js)$/)).returns(true);
+#Declare bash string variable
+BASH_VAR="Bash Script"
- this.sinon.stub(shjs, ""cat"")
- .withArgs(sinon.match(/pass\.js$/)).returns(""function test() { return 0; }"")
- .withArgs(sinon.match(/fail\.js$/)).returns(""console.log('Hello')"");
+# echo variable BASH_VAR
+echo $BASH_VAR
- cli.interpret([
- ""node"", ""jshint"", ""pass.js"", ""--reporter=reporter.js""
- ]);
+# meta characters and its special meaning in bash is
+# suppressed when using double quotes except "$", "\" and "`"
- cli.interpret([
- ""node"", ""jshint"", ""fail.js"", ""--reporter=reporter.js""
- ]);
+echo "It's $BASH_VAR and \"$BASH_VAR\" using backticks: `date`"
- test.strictEqual(cli.exit.args[0][0], 0);
- test.equal(cli.exit.args[1][0], 2);
+The result:
- test.done();
- }
-};
+$ ./double_quotes.sh
+Bash Script
+It's Bash Script and "Bash Script" using backticks: Thu 10 Feb 2022 10:24:15 PM EST
+
+Bash quoting with ANSI-C style
+
+There is also another type of quoting and that is ANSI-C. In this type of quoting characters escaped with \ will gain special meaning according to the ANSI-C standard.
+\a alert (bell) \b backspace
+\e an escape character \f form feed
+\n newline \r carriage return
+\t horizontal tab \v vertical tab
+\\ backslash \` single quote
+\nnn octal value of characters ( see [http://www.asciitable.com/ ASCII table] ) \xnn hexadecimal value of characters ( see [http://www.asciitable.com/ ASCII table] )