Time and again, you've heard people talk about the importance of investing in a two wheeler insurance policy. Bike insurance helps safeguard you and your vehicle from a number of circumstances like physical damage, accident cover, third-party liability, theft etc. Hence, it is wise to always buy and renew your two wheeler insurance on time. You must ensure to never let your two wheeler insurance lapse. This is because in the event of an emergency, you'll have to undergo unnecessary struggle and anxiety.
When renewing your two wheeler insurance policy, you can compare the available options in the market and decide whether you want to port your policy. This gives you a good window to consider the benefits you are receiving against the premium you pay. You can get some of the best two wheeler insurance quotes online. All you need to do is enter your details and answer a few questions. You will get a list of plausible two wheeler insurance policies that you could choose from.
However in case of renewal of your two-wheeler insurance, here are a few things you should keep in mind.
1. Decide before the expiry It is in your best interest to make a decision regarding renewing your two-wheeler insurance at least 45 days before the expiry of your bike insurance. Do not wait for your policy to lapse. If your policy lapses, you may stand to lose all the benefits you had accumulated so far.
2. Avail the No Claim Bonus If you have had your two-wheeler insurance for a year and have not claimed anything under it, you can ask for a No Claim Bonus at the time of renewal of your two wheeler insurance. Many insurers give anywhere between 15 to 20% discount on the premium of the two wheeler insurance as a No Claim Bonus. This amount can go much higher, if you continue to not claim the insurance for multiple years.
3. Relook at your cover During the renewal of your two wheeler insurance, you can ask for a higher or lower cover as you can change the details of your policy. After about a year of having the benefits of the two wheeler insurance policy, you would know what works for you and what doesn't.
4. Correct your information If you go through all your details and notice a discrepancy, now would be a good time to get that rectified, as it becomes easier during the renewal process. Take for instance your address. If you have moved to another city or changed your home within the same city, the address on your policy would need to be changed. During the renewal process you can get this done easily. If you notice any other mistake, like a spelling error or change in your date of birth, you can submit the required proof of documents and correct the information on your policy.
5. In case you've missed the expiry date of renewal It's best to avoid such a condition; however, if that is the case then make the most of the grace period provided by two wheeler insurance companies. They usually give a grace period of a month or 45 days depending on the policy. In case you have forgotten to make the premium payment, you can recover the policy by utilising this grace period.
Hope this helps you with the renewal of your two wheeler insurance!


text:
Primary Sources and Documents Related to Henry George
Henry George campaigning for Mayor of New York City as candidate of the United Labor Party, October 1886.
Praise for Henry George and the Crisis of Inequality
"This social biography of Henry George is a beautifully written, deeply researched, carefully argued, and analytically nuanced book. O'Donnell's own prodigious research, as well as his talent for synthesizing the findings of other scholars, makes this a social and political history of Gilded Age America as seen through the lens of Henry George's extraordinary life."
-- Daniel Czitrom, Mount Holyoke College
"We have long needed a modern account of the ideas of Henry George, in the context of the vast inequalities of wealth of the Gilded Age, the rise of a powerful labor movement, and George's campaign for mayor of New York City in 1886. Edward O'Donnell has now provided it, in a fascinating book that shows how the social realities and conflicts of that era speak to our own unequal times."
-- Eric Foner, Columbia University
"At a time when issues of social inequality have moved again to the forefront of political debate, it is good to remind ourselves that throughout the past two centuries, Americans have passionately contested the severe inequalities that went along with the spectacular economic development of the nation. In the nineteenth century, few voices were as powerful, and had as lasting an impact as that of Henry George. Edward O'Donnell's political biography is a brilliant introduction to George's life, ideas and politics--showing that inequality can generate political movements that challenge the rich and powerful. Highly recommended."
-- Sven Beckert, Harvard University
Description of the Book
Henry George and the Crisis of Inequality: Progress and Poverty in the Gilded Age is a social biography of the reformer Henry George and his most important years of public activism in the 1880s. Born in 1839, Henry George grew up in Philadelphia and later moved top California where he became a journalist. In the 1870s he became deeply troubled by the increase in poverty and social tension across the nation even as industrialization benefitted many and enriched a few. He responded by writing a book -- Progress and Poverty (1879) -- that addressed the vexing question of, Why did industrial progress seem to increase poverty and social inequality rather than diminish it? His answer was land monopoly. Large corporations, Wall Street wizards, and land speculators, he argued, had seized control of the most basic resource needed for economic success and upward mobility. As a result, the average American worker and farmer found himself slipping into low paid wage work and despair, a process that threatened to destroy the republican society established by the Founding Fathers. His solution was the "single-tax" on land values. While not everyone supported this solution, vast numbers of Americans--especially wage workers--read Progress and Poverty and came to accept its critique of laissez-faire industrial society. As a result, in the early 1880s George went from obscure San Francisco editor to a nationally (indeed, internationally) recognized social reformer. The culmination of this remarkable rise came in 1886 when George was nominated as the candidate for Mayor of New York City by the United Labor Party. Whereas labor party candidates in this period usually garnered a few hundred votes, George stunned observers by polling over 68,000 and nearly winning the election (he finished ahead of the Republican candidate, the young Theodore Roosevelt).
Henry George and the Crisis of Inequality examines both the rise of Henry George and his influence on the era, but also the wider context of Gilded Age America and the social turmoil and bitter debates over how best to control an industrial system that produced unprecedented progress and wealth, but also unprecedented levels of poverty, suffering, and alienation. Through it all what emerges is a compelling case for seeing Henry George as one of the first and one of the most influential social reformers in the Gilded Age whose writings and activism prodded Americans to conclude that a laissez-faire economy and minimalist government, while appropriate for the agrarian economy of the Founding Fathers' generation, spelled doom for the modern American republic in the age of industry. In other words, Henry George played a key role in promoting the idea that some level of government intervention in the economy--what the next generation of reformers would call "progressivism"--was necessary for the maintenance of America's republican society and its revered principles of equality and the common good.
Read an Excerpt (from the Introduction)
More than a million people gathered in New York City on October 27, 1886 to witness the unveiling of the Statue of Liberty. Among those present were President Grover Cleveland, members of Congress, representatives of the French government and other foreign dignitaries. The theme of this grand civic celebration and the many speeches and editorials that marked it was a celebration of progress and the health and vitality of the American republic. "We will not forget," declared President Cleveland, "that Liberty has here made her home." The editors of the New York Times concurred, gushing, "On our shores … has been realized … with all its imperfections, the most successful and hopeful of all the social systems that have grown up in the history of mankind." Chauncey Depew, a railroad magnate and powerful figure among the city's elite, seized upon the occasion to deliver a speech lauding democracy and self-government as the best remedy for the social unrest then rocking the nation. "[T]he problems of labor and capital … of property and poverty will work themselves out," he declared, "under the benign influence of enlightened law-making and law-abiding liberty, without the aid of Kings and armies, or of Anarchists and bombs" (N.Y. Times, October 29, 1886, 2).
Three days later in the same city a different set of citizens organized a very different event, the central message of which challenged the rosy assessments of a few days past. On the evening of Sunday October 30, 1886 thousands of spectators lined the sidewalks of lower Manhattan to witness one of the more extraordinary events in the city's history—a "Monster Parade" of some 30,000 workers of virtually every rank, skill, and ethnicity marching in support of an insurgent political campaign. Outraged by an unprecedented campaign of repression by business and civic leaders against organized labor that spring and summer, workers had formed the United Labor Party (ULP) and selected the reformer Henry George as their candidate for Mayor. The motivation behind the campaign and parade was the conviction that the American republic was in crisis, its sacred principles of liberty and equality in jeopardy. Expressing this sentiment, the ULP's announcement of the parade spoke of workers "unjustly deprived of the blessings which should be secured by [republican] society … because avaricious men have possessed themselves by means of unrepublican laws of the free gifts of nature." The ULP parade and campaign represented an effort to secure, "equal rights, social reform, true Republicanism, and universal Democracy." Days later Henry George stunned the city and the nation by nearly winning the election (John Swinton's Paper, October 31, 1886, 1).
These two starkly different events, separated only by a few days, illuminate the dualistic character of the Gilded Age, a period defined roughly from 1865-1900. As the name suggests, many considered it a golden age, one marked by spectacular advances in industrial output and technological innovation that transformed the United States from a predominantly agricultural nation that ranked well behind England, Germany, and France to the world's most formidable industrial power by 1900. Americans celebrated one astonishing achievement after another, from the completion of the transcontinental railroad (1869) to the opening of the Brooklyn Bridge (1883), from the laying of the Atlantic Cable connecting London and New York by telegraph (1866) to the unveiling of the Statue of Liberty (1886). Nowhere was this ebullient spirit more evident than at the world's fairs held in Philadelphia (1876) and Chicago (1893), events that afforded superb opportunities to showcase the wonders of American technological genius. On these occasions and seemingly at any opportunity, Americans invoked the optimistic themes of progress, expansion, growth, and success, "[O]ur growth has not been limited to territory, population and aggregate wealth, marvelous as it has been in each of those directions," offered President Benjamin Harrison in a typical address in 1889. "The masses of our people are better fed, clothed, and housed than their fathers were. … No other people have a government more worthy of their respect and love or a land so magnificent in extent… and so full of generous suggestion to enterprise and labor."
And yet for many other Americans there was abundant evidence that there was more to this upbeat vision of national development than initially met the eye. Put another way, the name Gilded Age (a term coined by Mark Twain in 1873) also suggested a disturbing superficiality to all this evidence of progress. As with a gilded piece of jewelry, it suggested, one needed only to scratch the surface of the thin gold layer to find the cold, hard, black iron that lay beneath. When Americans looked beneath the surface of progress, they saw the darker consequences of industrialization, especially the immense power accrued by large corporations and the men who ran them, the growing number of workers living in squalid slums, and the frequent episodes of labor-capital violence (the period 1880-1900 witnessed nearly 37,000 strikes). If these were the trends of the future warned an aging Walt Whitman in 1879, then "our republican experiment, notwithstanding all its surface-successes, is at heart an unhealthy failure."
Conservative middle- and upper-class Americans interpreted the increase in social turmoil and poverty in cultural rather than economic terms. Celebrating and embracing as never before laissez-faire individualism and its offshoot, social Darwinism, they determined that the greatest danger to the American republic was not the widening gap between the rich and the poor, but rather the possibility that the poor would mobilize collectively against their betters, either via the ballot or the bullet, and take what did not belong to them. Accordingly, they demonized the poor as unfit, grasping losers and took steps to sharply curtail charity which they deemed dangerous to the morals and manners of the needy. This spirit of social Darwinist hostility toward the poor was most famously captured in a widely reprinted sermon by Rev. Henry Ward Beecher, the nation's most renowned preacher. Dismissing the claims of workers that they could not live in dignity on wages of a dollar a day, he asserted that too many workingmen "insist on smoking and drinking beer." A frugal workingman could support his family on a diet of bread and water, argued Beecher, and "the man who cannot live on bread and water is not fit to live." Central to middle- and upper-class Americans' dismissal of the protests of workers was the conviction that these agitators had become infected with one of more of the varieties of European radicalisms like socialism, communism, and anarchism. The United States, they insisted, was a classless society. "[W]e have among us a pernicious communistic spirit," wrote Allan Pinkerton, head of the Pinkerton Detective Agency in the wake of the great 1877 railroad strike, "which is demoralizing workmen, continually creating a deeper and more intense antagonism between labor and capital … it must be crushed out completely, or we shall be compelled to submit to greater excesses and more overwhelming disasters in the near future."
Workers and farmers in the Gilded Age, however, offered a very different interpretation of the problems besetting the nation. In 1878, for example, the Knights of Labor adopted a Constitution, the preamble to which denounced the "recent alarming development and aggression of aggregated wealth" that if left unchecked "will inevitably lead to the pauperization and hopeless degradation of the toiling masses." One of the most pointed and widely read analyses of the Gilded Age's social turmoil was the book, Progress and Poverty, written in 1879 by Henry George, the man nominated by the ULP as labor's candidate for Mayor of New York in 1886. The title of the book itself captured perfectly the vexing duality emerging in late-nineteenth century America: industrialization brought both great progress for some and increased poverty for many. "It is as though an immense wedge were being forced, not underneath society, but through society, wrote George. "Those who are above the point of separation are elevated, but those who are below are crushed down." George warned that the very fate of the republic was at stake. "This association of poverty with progress," he asserted, "is the great enigma of our times. ... It is the riddle which the Sphinx of Fate puts to our civilization, and which not to answer is to be destroyed."
The year 1886, long known as the Great Upheaval, marked the highpoint of labor radicalism in nineteenth-century New York City and the nation. How did this remarkable mobilization by labor originate and how did Henry George come to assume so important a place in it? The former began nearly a decade earlier in the aftermath of the devastating depression years of the 1870s and took both ideological and institutional form. In the former case, the legacy of the 1870s—depression, wage reductions, unemployment, evictions, devaluation of skills, alienation from employers, and government repression of strikes—forced workers to challenge the veracity of antebellum free labor mantras and embrace toward new modes of thinking and action. Critical to this development was the rise of a small but influential group of socialists and the Knights of Labor that provided both organizational and ideological strength to workers.
In New York City, the capital of capitalism in the United States, labor activists faced an enormous challenge. The city's great size, dynamic economy, and diverse ethnic and cultural demography made for difficult conditions in which to foster working-class solidarity and build a lasting labor movement. Nonetheless, out of the depression years of the 1870s, New York City experienced a remarkable resurgence in working-class activism. Workers benefited not only from the energy and leadership provided by the Knights, but also from the creation of the Central Labor Union (1882), an umbrella labor organization dedicated to elevating the class consciousness and solidarity of working men and women, organizing new unions, and coordinating strikes and boycotts. By mid-1886, after city and state officials responded to a wave of strikes and boycotts by arresting more than one hundred labor activists, the ranks of the CLU swelled to over 200 member unions representing more than 150,000 workers from the New York metropolitan area. It was a combination of confidence stemming from four years of successful activism and fury over the recent crackdown that led these workers to launch a full-scale political challenge that fall in the form of the United Labor Party. Similar efforts to crush working-class activism across the country in 1886 led labor activists in nearly 200 towns and cities to field independent labor parties and candidates.
If these events explain in part the rise of working-class mobilization in the 1880s and the Great Upheaval of 1886, how do we explain the rise of Henry George? Or, put another way, how did a middle-class English-American Protestant calling for land reform gain so widespread a following among landless, urban, wage-earners, especially Irish Catholics? George's rise to prominence among American workers represents one of the most intriguing—and revealing—stories of late-nineteenth century labor history. George had been born in the Age of Jackson and reared on the principles of antebellum Christian perfectionism and free labor ideology. Yet he experienced in adulthood the hard times and frustrations of the hardscrabble years of the 1860s and 1870s. These influences and experiences placed him in a unique position from which to observe and interpret the revolutionary changes in social, economic, and political relations brought on by advanced industrial development.
A reform-minded newspaper editor living in California in the 1870s, he had become disturbed by the growing conflict between labor and capital and the increasing gap between rich and poor. The resulting book, Progress and Poverty: An Inquiry into the Cause of industrial Depressions and of Increase of Want with Increase of Wealth (1879), went on to become one of the most widely read and compelling works of the last half of the nineteenth century. Advocating radical land reform (via land-value taxation that came to be called the single-tax) as a means of eliminating the crushing mass poverty, restricted opportunity, and increased inequality that accompanied industrial progress, the book became immensely popular among urban working-class Americans. George's work of radical republicanism hit the presses at precisely the moment that working-class Americans were struggling to refashion a traditional republican ideology rendered increasingly hollow in the face of modern industrial capitalism. Written in an engaging, easily understood style and employing traditional American political idioms and concepts infused with new, radical meaning, Progress and Poverty provided American workers with a new ideological framework with which to analyze their predicament—a framework similar to that offered by the Knights of Labor, but also different in important ways. It succeeded because it assured workingmen that a new social and political order was possible and that they were the key actors in the struggle to attain it.
Central to George's growing popularity and influence on Gilded Age thought was his decision to move in 1880 from San Francisco to New York City. Not only did this change of venue allow him to promote the book, it also brought him into contact with a wide range of radicals, from Irish nationalists who sought to apply his radical land reform ideas to the situation of the Irish peasantry to socialists and progressive trade unionists. By the mid-1880s Progress and Poverty had become the largest selling book on political economy in American history. In the words of one contemporary economist, "Tens of thousands of laborers read Progress and Poverty who have never before looked between the covers of an economics book, and its conclusions are widely accepted articles in the workingmen's creed" (Richard T. Ely, Recent American Socialism [Hopkins, 1884], 19).
So when New York City workers formed the ULP in late summer 1886, George quickly emerged as the most popular potential nominee. Accepting the nomination, George commenced one of the most energetic and democratic campaigns in the city's history. The ULP lacked the money, experience, and access to institutional power enjoyed by the Republican and Democratic parties, but it nonetheless managed to garner a groundswell of support for George. The tens of thousands of workers and spectators who braved the drenching rain on the eve of the election to be part of the Monster Parade attested to this fact.
Two days after the parade, George and the ULP stunned contemporaries by finishing a close second to Democrat Abram Hewitt and ahead of third place finisher, Republican Theodore Roosevelt. Labor activists believed the results pointed to a dramatic resurgence of working-class political power, one destined to result in a national labor party. "It was an unprecedented uprising of the working classes which shook this city," declared John Swinton, the editor of a weekly labor newspaper. "It was a revolt that signifies the opening of a new political era." Observing events from across the Atlantic Ocean in London, Frederick Engels wrote, "The Henry George boom ... was an epoch-making day. ... The first great step of importance for every country newly entering into the movement is always the constitution of the workers as an independent political party, no matter how, so long as it is a distinct workers' party. And this step has been taken, much more rapidly than we had a right to expect …"
But these optimistic hopes were soon dashed as the ULP collapsed one year later, riven by ideological factionalism, oddly much of it stoked by Henry George. Nationally the rising tide of worker mobilization, symbolized by the disintegration of the Knights of Labor, foundered in the face of internal dissention, a more unified front by business, successful co-optation of selected labor agenda items by the major political parties, and government repression.
But the story of Henry George and the Great Upheaval did not end in 1886-1887. While George the man lost credibility among working-class Americans, his ideas lived on among them—and increasingly among a growing number of middle-class reformers. Specifically, this meant the birth of the Single Tax movement that lasted well into the 20th century and still claims adherents throughout the world. More broadly—and more significantly—George's advocacy of a radical break (even as he couched it in the familiar and comforting terms of American republicanism) from the nation's liberal past in the form of abolishing private property and empowering the state in the name of establishing a cooperative society made a significant contribution to the emergence of a new liberalism or progressivism in American political culture.
(c) copyright Columbia University Press, 2015

redpajama_set_name: RedPajamaCommonCrawl


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Sydowia 5: 428 (1951)

#### Original name
Wageria portoricensis F. Stevens

### Remarks
null

redpajama_set_name: RedPajamaGithub


A few decades ago, personal computers were bulky, beige objects, with hardware that now seems impossibly low-powered and overpriced. They've since evolved into devices that are drastically more powerful and stylish. We thought we'd explore how PCs have changed by visually comparing some of the milestones in their technological evolution.
Let's start with a classic peripheral device: the computer mouse. By December 2008, Logitech had sold 1 billion of them. And, while many people have now abandoned computer mice for trackpads and touchscreens, they've undeniably played a pivotal role in the history of the personal computer.
There have been hundreds of computer mouse designs over the years, so we have shortlisted nine that we think represent some of the major milestones in their evolution.
1963 – American Inventor Dr. Douglas C. Engelbart combines two wheels with transducers to translate horizontal and vertical movement into X and Y coordinates, creating the first ever mouse.
1982 – Logitech releases its first mouse, the P4, sold for $299 (about $800 today).
1991 – RF transmission allows for the first wireless mouse.
1995 – The scroll wheel is introduced.
1996 – Microsoft releases the IntelliMouse, bringing the concept of scrolling to the masses.
2009 – Apple introduces the Magic Mouse, merging multiple buttons back into a single button and incorporating trackpad technology, allowing users to control it with gestures.
The first laptops, the size of a sewing machine, didn't quite fit on your lap, they would be better classified as a portable computer. These examples best represent how the laptop computer has changed since 1981, when the first microprocessor-based, mass-produced laptop was released.
1981 – Developed by Adam Osborne and designed by Lee Felsensetin, the Osborne 1 is introduced, the first commercially available portable computer. Weighing in at 24 pounds with 64 KB of memory, it sells for $1,795 (about $4,500 today).
1982 – Compaq releases the Compaq Portable, the first clone of the IBM PC.
1984 – The TRS80 is introduced, better representing today's modern laptops. Weighing in at 4.25 pounds with 24 KB of RAM, it sells for $999 (about $2,200 today).
1989 – Apple's first laptop, the Macintosh Portable, is released at a cost of $6,500.
1992 – The IBM ThinkPad 700C becomes the first laptop with a 10.4 inch activematrix color display.
2000 – Screens expand to 14.1 inches with the introduction of the ThinkPad T20.
2001 – One of the earliest widescreen laptops is introduced by Apple, the PowerBook.
The storage of data extends back to the 1920s and 1930s with the advent of magnetic tape and drums. Even by the mid-1950s, storage capacity had increased greatly, but a 5 MB hard drive was still far from being portable (see photo to the right). The history of portable storage is more recent, with rapidly growing capacity and shrinking sizes.
1971 – The floppy disk is first introduced.
1975 – Alan Shugart, previously from IBM and Memorex, creates Shugart Associates and releases the low cost 8 inch floppy disk which holds 800 kilobytes of data.
1978 – The 5.25 inch floppy disk is introduced with 1.2 MB of storage.
1981 – Sony introduces the 3.5 inch floppy disk with 1.44 MB of storage.
1994 – Iomega vastly increases storage capacity with its 100 MB zip disk.
1997 – Recordable CDs offer an even greater 700 MB of storage capacity.
1999 – MSystems files a patent for what we know as a USB flash drive.
2001 – Recordable DVDs hit the market, offering 4.7 GB of storage.
2004 – Micro SD cards reduce the size of storing data, taking up a fraction of the space.
2013 – Kingston announces a 1 TB USB flash drive.
Currently, we are in the era of cloud storage, with seemingly unlimited amountsof space for extremely low costs. This present paradigm wasn't always the case. Storage capacity and cost have changed significantly in recent decades. The graph below shows, on a logarithmic scale, the average cost per gigabyte since 1980.
At one point, the Apple we know today was teetering on the edge of collapse, until an all-in-one desktop computer helped turn it all around.
1998 – Apple introduces the all-in-one iMac G3.
2002 – A radical design shift was made possible by the relatively flat LCD screen. Affectionately coined the iLamp by supporters, it led to the iMac design we know today.
2004 – The iMac G5 was the first to house all components in its 'screen'.
2005 – Apple moves from its PowerPC processor to Intel chips.
2013 – Thin is in. The latest iMac is just 5mm at its slimmest point.
Internet: Richard Branson has joined the race to put a constellation of satellites into orbit, which would blanket the entire world with internet access. And Gartner, Inc. predicts that by 2020, the "Internet of Things" will be a reality, with 26 billion devices online, including light bulbs, door locks, and cars.
Storage: Very high-density SATA drives of more 10 TB are on the way, as is increasingly more affordable solid-state storage, which will eventually become the norm for servers (but not for a while!).
Displays: Apple's Retina displays seem to have packed as many pixels into flat screens as we'll ever need, so maybe the next step in the evolution of displays won't involve flat screens at all. It looks like it might be bringing the display closer to us, whether that's on our wrists, integrated into our glasses, or even—in the more distant future—created using neural implants.
You: The collaboration of technical minds drives the transformation of computer technology. You can stay ahead of the curve alongside thousands of other professionals right here at Experts Exchange. So what's the next stage of your personal evolution going to be?


text:
TV ONE ANNOUNCES PRODUCTION OF ORIGINAL FILM, HIT A LICK, STARRING LIL MAMA, LANCE GROSS, TAMI ROMAN AND FLOYD MAYWEATHER
Posted on November 11, 2016 at 11:07 AM by Tim
TV One today announced that production is underway in Atlanta, Georgia for the new film, Hit A Lick, which marks the feature-length directorial debut for Tasha Smith (For Better Or Worse, Empire) and stars Lil Mama, Lance Gross, Tami Roman, Big Freedia, Lil Zane, and Floyd Mayweather.Slated for a 3Q17 premiere, the film is the network's first original movie inspired by an episode of TV One's original series, For My Man.
Hit A Lick, tells the tragic story of Falicia Blakely, a teen mom who grows up in the fast-lane. When she becomes an exotic dancer, she attracts the attention of local pimp and predator, Dino. His empty promises of a life together turn Falicia into a pawn in his dangerous games; and she's forced to prove her love for him at the expense of innocent lives.
Hit A Lick cast announced today:
Lil Mama (CrazySexyCool: The TLC Story) as Falicia, a sassy 17 year-old young mom-turned-exotic dancer who falls hard for her pimp boyfriend and finds herself forced to choose between commitment to his love and a life of crime.
Lance Gross (House of Payne, Temptation) as Dino, a modern day Dr. Jekyll and Mr. Hyde, who uses Falicia's weakness for his gain.
Tami Roman (Basketball Wives, Belle's) as Stacey, Falicia's alcoholic mother who has jumped in and out of her daughter's life, exposing her to too much too soon.
Floyd Mayweather Jr. as Punch, a loud and cocky club owner from Miami.
Tiffany Black (Bring Out The Lady) as Pumpkin, Falicia's rough around the edges "road dog" who fully intends to strip her way out of poverty.
Walter Fauntleroy as "Q," Falicia's regular customer-turned-friend; a good guy caught in a bad situation.
Big Freedia as Tam, neighborhood friend and confidante to Falicia's mother.
Lil Zane as DJ Pierre, Club DJ.
In addition to directing and producing, Tasha Smith is a multifaceted actress whose work brings style and intensity to the subjects she plays on the big and small screens. She currently stars in the Tyler Perry television series, For Better or For Worse on OWN, for which she earned an NAACP Image Award nomination as "Outstanding Actress in a Comedy Series." Additionally, Smith appears in Lee Daniels' FOX hip-hop drama series, Empire, as well as the Starz series Power in pivotal recurring roles.
The Hit A Lick screenplay is executive produced and written by industry veteran Cas Sigers-Beedles, who previously wrote and executive produced the TV One movies Welcome to the Family and Girlfriends Getaway 1 &2.
Hit A Lick is produced for TV One by Eric Tomosunas, Keith Neal and James Seppelfrick for Swirl Films. For TV One, Tia A. Smith is Sr. Director of Original Programming & Production and Executive in Charge of Production; Donyell McCullough is Senior Director of Talent & Casting; Robyn Greene-Arrington is VP of Original Programming, and D'Angela Proctor is Head of Original Programming and Production.
For more information about TV One's upcoming programming, including original movies, visit the network's companion website at www.tvone.tv. TV One viewers can also join the conversation by connecting via social media on Twitter, Instagram and Facebook(@tvonetv) using the hash tag #REPRESENT.
ABOUT SWIRL FILMS
Swirl Films is America's "number one urban film production company," a full service Film & TV production company with over 60 original productions in the past six years, focusing on urban content and programming, independent features and multi-camera productions. Swirl Films is a major content provider for TV One which includes original productions: Born Again Virgin, starring Danielle Nicolet, Meagan Holder and Eva Marcille; Here We Go Again, starring LeToya Luckett, Wendy Raquel Robinson and Kyndall Ferguson; Fear Files (Lynn Whitfield, Robin Givens, Columbus Short), Comeback Dad (Charles S. Dutton, Loretta Devine), Russ Parr's award-winning The Undershepherd, Hear No Evil, and 35 & Ticking (Kevin Hart).
ABOUT TV ONE
Launched in January 2004, TV One serves more than 60 million households, offering a broad range of real-life and entertainment-focused original programming, classic series, movies and music designed to entertain and inform a diverse audience of adult black viewers. The network represents the best in black culture and entertainment with fan favorite shows Unsung, Rickey Smiley For Real, Fatal Attraction, Hollywood Divas and The NAACP Image Awards. In addition, TV One is the cable home of blockbuster drama Empire, and NewsOne Now, the only live daily news program dedicated to black viewers. In December 2008, the company launched TV One High Def, which now serves 14 million households. TV One is solely owned by Radio One [NASDAQ: ROIA and ROIAK, www.radio-one.com], the largest radio company that primarily targets Black and urban listeners.
BronzeLens Film Festival 2018 Brings Diverse Films and Interactive Experiences Designed to Stimulate Ideation and Foster Collaborations to Atlanta
Posted by Khalif - August 16, 2018 0
BronzeLens Film Festival 2018 (BronzeLens) will present an interactive experience designed to stimulate ideation and foster collaborations over the course of…
Tulsa Officer Betty Shelby Charged With First-Degree Manslaughter In Terence Crutcher's Death
Posted by Tim - September 23, 2016 0
Tulsa County District Attorney Steve Kunzweiler announced Tulsa Police Officer Betty Shelbywill be charged with first-degree manslaughter in the shooting death of Terence Crutcher at a Thursday…
Lawsuit Against FBI, DHS Seeks Information On Surveillance Of Black Lives Matter Protesters
Posted by Tim - October 24, 2016 0
A group of human rights lawyers say they have documentation on local law enforcement agencies surveilling members of the Movement for Black…
Pregnancy Drama: Stevie J Claims Joseline Hernandez Attacked Him After Popping Up At His House
Posted by Tim - December 7, 2016 0
Don't expect Stevie J and Joseline Hernandez to kill the drama for the sake of their unborn child. According to TMZ,…
Sheryl Lee Ralph Returns to Broadway Tonight in "WICKED"
Posted by Tim - November 1, 2016 0
Sheryl Lee Ralph, who was Tony-nominated for her performance as Deena Jones in the original company of the award-winning musical Dreamgirls, will join…


text:
/**
 * @constructor
 * @extends {WebInspector.VBox}
 * @param {!WebInspector.CanvasProfileHeader} profile
 */
WebInspector.CanvasProfileView = function(profile)
{
    WebInspector.VBox.call(this);
    this.registerRequiredCSS("canvasProfiler.css");
    this.element.classList.add("canvas-profile-view");

    this._profile = profile;
    this._traceLogId = profile.traceLogId();
    this._traceLogPlayer = /** @type {!WebInspector.CanvasTraceLogPlayerProxy} */ (profile.traceLogPlayer());
    this._linkifier = new WebInspector.Linkifier();

    this._replayInfoSplitView = new WebInspector.SplitView(true, true, "canvasProfileViewReplaySplitViewState", 0.34);
    this._replayInfoSplitView.show(this.element);

    this._imageSplitView = new WebInspector.SplitView(false, true, "canvasProfileViewSplitViewState", 300);
    this._imageSplitView.show(this._replayInfoSplitView.mainElement());

    var replayImageContainerView = new WebInspector.VBox();
    replayImageContainerView.setMinimumSize(50, 28);
    replayImageContainerView.show(this._imageSplitView.mainElement());

    // NOTE: The replayImageContainer can NOT be a flex div (e.g. VBox or SplitView elements)!
    var replayImageContainer = replayImageContainerView.element.createChild("div");
    replayImageContainer.id = "canvas-replay-image-container";
    this._replayImageElement = replayImageContainer.createChild("img", "canvas-replay-image");
    this._debugInfoElement = replayImageContainer.createChild("div", "canvas-debug-info hidden");
    this._spinnerIcon = replayImageContainer.createChild("div", "spinner-icon small hidden");

    var replayLogContainerView = new WebInspector.VBox();
    replayLogContainerView.setMinimumSize(22, 22);
    replayLogContainerView.show(this._imageSplitView.sidebarElement());

    var replayLogContainer = replayLogContainerView.element;
    var controlsContainer = replayLogContainer.createChild("div", "status-bar");
    var logGridContainer = replayLogContainer.createChild("div", "canvas-replay-log");

    this._createControlButton(controlsContainer, "canvas-replay-first-step", WebInspector.UIString("First call."), this._onReplayFirstStepClick.bind(this));
    this._createControlButton(controlsContainer, "canvas-replay-prev-step", WebInspector.UIString("Previous call."), this._onReplayStepClick.bind(this, false));
    this._createControlButton(controlsContainer, "canvas-replay-next-step", WebInspector.UIString("Next call."), this._onReplayStepClick.bind(this, true));
    this._createControlButton(controlsContainer, "canvas-replay-prev-draw", WebInspector.UIString("Previous drawing call."), this._onReplayDrawingCallClick.bind(this, false));
    this._createControlButton(controlsContainer, "canvas-replay-next-draw", WebInspector.UIString("Next drawing call."), this._onReplayDrawingCallClick.bind(this, true));
    this._createControlButton(controlsContainer, "canvas-replay-last-step", WebInspector.UIString("Last call."), this._onReplayLastStepClick.bind(this));

    this._replayContextSelector = new WebInspector.StatusBarComboBox(this._onReplayContextChanged.bind(this));
    this._replayContextSelector.createOption(WebInspector.UIString("<screenshot auto>"), WebInspector.UIString("Show screenshot of the last replayed resource."), "");
    controlsContainer.appendChild(this._replayContextSelector.element);

    this._installReplayInfoSidebarWidgets(controlsContainer);

    this._replayStateView = new WebInspector.CanvasReplayStateView(this._traceLogPlayer);
    this._replayStateView.show(this._replayInfoSplitView.sidebarElement());

    /** @type {!Object.<string, boolean>} */
    this._replayContexts = {};

    var columns = [
        {title: "#", sortable: false, width: "5%"},
        {title: WebInspector.UIString("Call"), sortable: false, width: "75%", disclosure: true},
        {title: WebInspector.UIString("Location"), sortable: false, width: "20%"}
    ];

    this._logGrid = new WebInspector.DataGrid(columns);
    this._logGrid.element.classList.add("fill");
    this._logGrid.show(logGridContainer);
    this._logGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._replayTraceLog, this);

    this.element.addEventListener("mousedown", this._onMouseClick.bind(this), true);

    this._popoverHelper = new WebInspector.ObjectPopoverHelper(this.element, this._popoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), this._onHidePopover.bind(this), true);
    this._popoverHelper.setRemoteObjectFormatter(this._hexNumbersFormatter.bind(this));

    this._requestTraceLog(0);
}

/**
 * @const
 * @type {number}
 */
WebInspector.CanvasProfileView.TraceLogPollingInterval = 500;

WebInspector.CanvasProfileView.prototype = {
    dispose: function()
    {
        this._linkifier.reset();
    },

    get statusBarItems()
    {
        return [];
    },

    get profile()
    {
        return this._profile;
    },

    /**
     * @override
     * @return {!Array.<!Element>}
     */
    elementsToRestoreScrollPositionsFor: function()
    {
        return [this._logGrid.scrollContainer];
    },

    /**
     * @param {!Element} controlsContainer
     */
    _installReplayInfoSidebarWidgets: function(controlsContainer)
    {
        this._replayInfoResizeWidgetElement = controlsContainer.createChild("div", "resizer-widget");
        this._replayInfoSplitView.addEventListener(WebInspector.SplitView.Events.ShowModeChanged, this._updateReplayInfoResizeWidget, this);
        this._updateReplayInfoResizeWidget();
        this._replayInfoSplitView.installResizer(this._replayInfoResizeWidgetElement);

        this._toggleReplayStateSidebarButton = this._replayInfoSplitView.createShowHideSidebarButton("sidebar", "canvas-sidebar-show-hide-button");

        controlsContainer.appendChild(this._toggleReplayStateSidebarButton.element);
        this._replayInfoSplitView.hideSidebar();
    },

    _updateReplayInfoResizeWidget: function()
    {
        this._replayInfoResizeWidgetElement.classList.toggle("hidden", this._replayInfoSplitView.showMode() !== WebInspector.SplitView.ShowMode.Both);
    },

    /**
     * @param {?Event} event
     */
    _onMouseClick: function(event)
    {
        var resourceLinkElement = event.target.enclosingNodeOrSelfWithClass("canvas-formatted-resource");
        if (resourceLinkElement) {
            this._replayInfoSplitView.showBoth();
            this._replayStateView.selectResource(resourceLinkElement.__resourceId);
            event.consume(true);
            return;
        }
        if (event.target.enclosingNodeOrSelfWithClass("webkit-html-resource-link"))
            event.consume(false);
    },

    /**
     * @param {!Element} parent
     * @param {string} className
     * @param {string} title
     * @param {function(this:WebInspector.CanvasProfileView)} clickCallback
     */
    _createControlButton: function(parent, className, title, clickCallback)
    {
        var button = new WebInspector.StatusBarButton(title, className + " canvas-replay-button");
        parent.appendChild(button.element);

        button.makeLongClickEnabled();
        button.addEventListener("click", clickCallback, this);
        button.addEventListener("longClickDown", clickCallback, this);
        button.addEventListener("longClickPress", clickCallback, this);
    },

    _onReplayContextChanged: function()
    {
        var selectedContextId = this._replayContextSelector.selectedOption().value;

        /**
         * @param {?CanvasAgent.ResourceState} resourceState
         * @this {WebInspector.CanvasProfileView}
         */
        function didReceiveResourceState(resourceState)
        {
            this._enableWaitIcon(false);
            if (selectedContextId !== this._replayContextSelector.selectedOption().value)
                return;
            var imageURL = (resourceState && resourceState.imageURL) || "";
            this._replayImageElement.src = imageURL;
            this._replayImageElement.style.visibility = imageURL ? "" : "hidden";
        }

        this._enableWaitIcon(true);
        this._traceLogPlayer.getResourceState(selectedContextId, didReceiveResourceState.bind(this));
    },

    /**
     * @param {boolean} forward
     */
    _onReplayStepClick: function(forward)
    {
        var selectedNode = this._logGrid.selectedNode;
        if (!selectedNode)
            return;
        var nextNode = selectedNode;
        do {
            nextNode = forward ? nextNode.traverseNextNode(false) : nextNode.traversePreviousNode(false);
        } while (nextNode && typeof nextNode.index !== "number");
        (nextNode || selectedNode).revealAndSelect();
    },

    /**
     * @param {boolean} forward
     */
    _onReplayDrawingCallClick: function(forward)
    {
        var selectedNode = this._logGrid.selectedNode;
        if (!selectedNode)
            return;
        var nextNode = selectedNode;
        while (nextNode) {
            var sibling = forward ? nextNode.nextSibling : nextNode.previousSibling;
            if (sibling) {
                nextNode = sibling;
                if (nextNode.hasChildren || nextNode.call.isDrawingCall)
                    break;
            } else {
                nextNode = nextNode.parent;
                if (!forward)
                    break;
            }
        }
        if (!nextNode && forward)
            this._onReplayLastStepClick();
        else
            (nextNode || selectedNode).revealAndSelect();
    },

    _onReplayFirstStepClick: function()
    {
        var firstNode = this._logGrid.rootNode().children[0];
        if (firstNode)
            firstNode.revealAndSelect();
    },

    _onReplayLastStepClick: function()
    {
        var lastNode = this._logGrid.rootNode().children.peekLast();
        if (!lastNode)
            return;
        while (lastNode.expanded) {
            var lastChild = lastNode.children.peekLast();
            if (!lastChild)
                break;
            lastNode = lastChild;
        }
        lastNode.revealAndSelect();
    },

    /**
     * @param {boolean} enable
     */
    _enableWaitIcon: function(enable)
    {
        this._spinnerIcon.classList.toggle("hidden", !enable);
        this._debugInfoElement.classList.toggle("hidden", enable);
    },

    _replayTraceLog: function()
    {
        if (this._pendingReplayTraceLogEvent)
            return;
        var index = this._selectedCallIndex();
        if (index === -1 || index === this._lastReplayCallIndex)
            return;
        this._lastReplayCallIndex = index;
        this._pendingReplayTraceLogEvent = true;

        /**
         * @param {?CanvasAgent.ResourceState} resourceState
         * @param {number} replayTime
         * @this {WebInspector.CanvasProfileView}
         */
        function didReplayTraceLog(resourceState, replayTime)
        {
            delete this._pendingReplayTraceLogEvent;
            this._enableWaitIcon(false);

            this._debugInfoElement.textContent = WebInspector.UIString("Replay time: %s", Number.secondsToString(replayTime / 1000, true));
            this._onReplayContextChanged();

            if (index !== this._selectedCallIndex())
                this._replayTraceLog();
        }
        this._enableWaitIcon(true);
        this._traceLogPlayer.replayTraceLog(index, didReplayTraceLog.bind(this));
    },

    /**
     * @param {number} offset
     */
    _requestTraceLog: function(offset)
    {
        /**
         * @param {?CanvasAgent.TraceLog} traceLog
         * @this {WebInspector.CanvasProfileView}
         */
        function didReceiveTraceLog(traceLog)
        {
            this._enableWaitIcon(false);
            if (!traceLog)
                return;
            var callNodes = [];
            var calls = traceLog.calls;
            var index = traceLog.startOffset;
            for (var i = 0, n = calls.length; i < n; ++i)
                callNodes.push(this._createCallNode(index++, calls[i]));
            var contexts = traceLog.contexts;
            for (var i = 0, n = contexts.length; i < n; ++i) {
                var contextId = contexts[i].resourceId || "";
                var description = contexts[i].description || "";
                if (this._replayContexts[contextId])
                    continue;
                this._replayContexts[contextId] = true;
                this._replayContextSelector.createOption(description, WebInspector.UIString("Show screenshot of this context's canvas."), contextId);
            }
            this._appendCallNodes(callNodes);
            if (traceLog.alive)
                setTimeout(this._requestTraceLog.bind(this, index), WebInspector.CanvasProfileView.TraceLogPollingInterval);
            else
                this._flattenSingleFrameNode();
            this._profile._updateCapturingStatus(traceLog);
            this._onReplayLastStepClick(); // Automatically replay the last step.
        }
        this._enableWaitIcon(true);
        this._traceLogPlayer.getTraceLog(offset, undefined, didReceiveTraceLog.bind(this));
    },

    /**
     * @return {number}
     */
    _selectedCallIndex: function()
    {
        var node = this._logGrid.selectedNode;
        return node ? this._peekLastRecursively(node).index : -1;
    },

    /**
     * @param {!WebInspector.DataGridNode} node
     * @return {!WebInspector.DataGridNode}
     */
    _peekLastRecursively: function(node)
    {
        var lastChild;
        while ((lastChild = node.children.peekLast()))
            node = lastChild;
        return node;
    },

    /**
     * @param {!Array.<!WebInspector.DataGridNode>} callNodes
     */
    _appendCallNodes: function(callNodes)
    {
        var rootNode = this._logGrid.rootNode();
        var frameNode = rootNode.children.peekLast();
        if (frameNode && this._peekLastRecursively(frameNode).call.isFrameEndCall)
            frameNode = null;
        for (var i = 0, n = callNodes.length; i < n; ++i) {
            if (!frameNode) {
                var index = rootNode.children.length;
                var data = {};
                data[0] = "";
                data[1] = WebInspector.UIString("Frame #%d", index + 1);
                data[2] = "";
                frameNode = new WebInspector.DataGridNode(data);
                frameNode.selectable = true;
                rootNode.appendChild(frameNode);
            }
            var nextFrameCallIndex = i + 1;
            while (nextFrameCallIndex < n && !callNodes[nextFrameCallIndex - 1].call.isFrameEndCall)
                ++nextFrameCallIndex;
            this._appendCallNodesToFrameNode(frameNode, callNodes, i, nextFrameCallIndex);
            i = nextFrameCallIndex - 1;
            frameNode = null;
        }
    },

    /**
     * @param {!WebInspector.DataGridNode} frameNode
     * @param {!Array.<!WebInspector.DataGridNode>} callNodes
     * @param {number} fromIndex
     * @param {number} toIndex not inclusive
     */
    _appendCallNodesToFrameNode: function(frameNode, callNodes, fromIndex, toIndex)
    {
        var self = this;
        function appendDrawCallGroup()
        {
            var index = self._drawCallGroupsCount || 0;
            var data = {};
            data[0] = "";
            data[1] = WebInspector.UIString("Draw call group #%d", index + 1);
            data[2] = "";
            var node = new WebInspector.DataGridNode(data);
            node.selectable = true;
            self._drawCallGroupsCount = index + 1;
            frameNode.appendChild(node);
            return node;
        }

        function splitDrawCallGroup(drawCallGroup)
        {
            var splitIndex = 0;
            var splitNode;
            while ((splitNode = drawCallGroup.children[splitIndex])) {
                if (splitNode.call.isDrawingCall)
                    break;
                ++splitIndex;
            }
            var newDrawCallGroup = appendDrawCallGroup();
            var lastNode;
            while ((lastNode = drawCallGroup.children[splitIndex + 1]))
                newDrawCallGroup.appendChild(lastNode);
            return newDrawCallGroup;
        }

        var drawCallGroup = frameNode.children.peekLast();
        var groupHasDrawCall = false;
        if (drawCallGroup) {
            for (var i = 0, n = drawCallGroup.children.length; i < n; ++i) {
                if (drawCallGroup.children[i].call.isDrawingCall) {
                    groupHasDrawCall = true;
                    break;
                }
            }
        } else
            drawCallGroup = appendDrawCallGroup();

        for (var i = fromIndex; i < toIndex; ++i) {
            var node = callNodes[i];
            drawCallGroup.appendChild(node);
            if (node.call.isDrawingCall) {
                if (groupHasDrawCall)
                    drawCallGroup = splitDrawCallGroup(drawCallGroup);
                else
                    groupHasDrawCall = true;
            }
        }
    },

    /**
     * @param {number} index
     * @param {!CanvasAgent.Call} call
     * @return {!WebInspector.DataGridNode}
     */
    _createCallNode: function(index, call)
    {
        var callViewElement = document.createElement("div");

        var data = {};
        data[0] = index + 1;
        data[1] = callViewElement;
        data[2] = "";
        if (call.sourceURL) {
            // FIXME(62725): stack trace line/column numbers are one-based.
            var lineNumber = Math.max(0, call.lineNumber - 1) || 0;
            var columnNumber = Math.max(0, call.columnNumber - 1) || 0;
            data[2] = this._linkifier.linkifyLocation(this.profile.target(), call.sourceURL, lineNumber, columnNumber);
        }

        callViewElement.createChild("span", "canvas-function-name").textContent = call.functionName || "context." + call.property;

        if (call.arguments) {
            callViewElement.createTextChild("(");
            for (var i = 0, n = call.arguments.length; i < n; ++i) {
                var argument = /** @type {!CanvasAgent.CallArgument} */ (call.arguments[i]);
                if (i)
                    callViewElement.createTextChild(", ");
                var element = WebInspector.CanvasProfileDataGridHelper.createCallArgumentElement(argument);
                element.__argumentIndex = i;
                callViewElement.appendChild(element);
            }
            callViewElement.createTextChild(")");
        } else if (call.value) {
            callViewElement.createTextChild(" = ");
            callViewElement.appendChild(WebInspector.CanvasProfileDataGridHelper.createCallArgumentElement(call.value));
        }

        if (call.result) {
            callViewElement.createTextChild(" => ");
            callViewElement.appendChild(WebInspector.CanvasProfileDataGridHelper.createCallArgumentElement(call.result));
        }

        var node = new WebInspector.DataGridNode(data);
        node.index = index;
        node.selectable = true;
        node.call = call;
        return node;
    },

    _popoverAnchor: function(element, event)
    {
        var argumentElement = element.enclosingNodeOrSelfWithClass("canvas-call-argument");
        if (!argumentElement || argumentElement.__suppressPopover)
            return null;
        return argumentElement;
    },

    _resolveObjectForPopover: function(argumentElement, showCallback, objectGroupName)
    {
        /**
         * @param {?Protocol.Error} error
         * @param {!RuntimeAgent.RemoteObject=} result
         * @param {!CanvasAgent.ResourceState=} resourceState
         * @this {WebInspector.CanvasProfileView}
         */
        function showObjectPopover(error, result, resourceState)
        {
            if (error)
                return;

            // FIXME: handle resourceState also
            if (!result)
                return;

            this._popoverAnchorElement = argumentElement.cloneNode(true);
            this._popoverAnchorElement.classList.add("canvas-popover-anchor");
            this._popoverAnchorElement.classList.add("source-frame-eval-expression");
            argumentElement.parentElement.appendChild(this._popoverAnchorElement);

            var diffLeft = this._popoverAnchorElement.boxInWindow().x - argumentElement.boxInWindow().x;
            this._popoverAnchorElement.style.left = this._popoverAnchorElement.offsetLeft - diffLeft + "px";

            showCallback(WebInspector.runtimeModel.createRemoteObject(result), false, this._popoverAnchorElement);
        }

        var evalResult = argumentElement.__evalResult;
        if (evalResult)
            showObjectPopover.call(this, null, evalResult);
        else {
            var dataGridNode = this._logGrid.dataGridNodeFromNode(argumentElement);
            if (!dataGridNode || typeof dataGridNode.index !== "number") {
                this._popoverHelper.hidePopover();
                return;
            }
            var callIndex = dataGridNode.index;
            var argumentIndex = argumentElement.__argumentIndex;
            if (typeof argumentIndex !== "number")
                argumentIndex = -1;
            CanvasAgent.evaluateTraceLogCallArgument(this._traceLogId, callIndex, argumentIndex, objectGroupName, showObjectPopover.bind(this));
        }
    },

    /**
     * @param {!WebInspector.RemoteObject} object
     * @return {string}
     */
    _hexNumbersFormatter: function(object)
    {
        if (object.type === "number") {
            // Show enum values in hex with min length of 4 (e.g. 0x0012).
            var str = "0000" + Number(object.description).toString(16).toUpperCase();
            str = str.replace(/^0+(.{4,})$/, "$1");
            return "0x" + str;
        }
        return object.description || "";
    },

    _onHidePopover: function()
    {
        if (this._popoverAnchorElement) {
            this._popoverAnchorElement.remove()
            delete this._popoverAnchorElement;
        }
    },

    _flattenSingleFrameNode: function()
    {
        var rootNode = this._logGrid.rootNode();
        if (rootNode.children.length !== 1)
            return;
        var frameNode = rootNode.children[0];
        while (frameNode.children[0])
            rootNode.appendChild(frameNode.children[0]);
        rootNode.removeChild(frameNode);
    },

    __proto__: WebInspector.VBox.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ProfileType}
 */
WebInspector.CanvasProfileType = function()
{
    WebInspector.ProfileType.call(this, WebInspector.CanvasProfileType.TypeId, WebInspector.UIString("Capture Canvas Frame"));
    this._recording = false;
    this._lastProfileHeader = null;

    this._capturingModeSelector = new WebInspector.StatusBarComboBox(this._dispatchViewUpdatedEvent.bind(this));
    this._capturingModeSelector.element.title = WebInspector.UIString("Canvas capture mode.");
    this._capturingModeSelector.createOption(WebInspector.UIString("Single Frame"), WebInspector.UIString("Capture a single canvas frame."), "");
    this._capturingModeSelector.createOption(WebInspector.UIString("Consecutive Frames"), WebInspector.UIString("Capture consecutive canvas frames."), "1");

    /** @type {!Object.<string, !Element>} */
    this._frameOptions = {};

    /** @type {!Object.<string, boolean>} */
    this._framesWithCanvases = {};

    this._frameSelector = new WebInspector.StatusBarComboBox(this._dispatchViewUpdatedEvent.bind(this));
    this._frameSelector.element.title = WebInspector.UIString("Frame containing the canvases to capture.");
    this._frameSelector.element.classList.add("hidden");

    this._target = /** @type {!WebInspector.Target} */ (WebInspector.targetManager.activeTarget());
    this._target.resourceTreeModel.frames().forEach(this._addFrame, this);
    this._target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, this._frameAdded, this);
    this._target.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, this._frameRemoved, this);

    this._dispatcher = new WebInspector.CanvasDispatcher(this);
    this._canvasAgentEnabled = false;

    this._decorationElement = document.createElement("div");
    this._decorationElement.className = "profile-canvas-decoration";
    this._updateDecorationElement();
}

WebInspector.CanvasProfileType.TypeId = "CANVAS_PROFILE";

WebInspector.CanvasProfileType.prototype = {
    get statusBarItems()
    {
        return [this._capturingModeSelector.element, this._frameSelector.element];
    },

    get buttonTooltip()
    {
        if (this._isSingleFrameMode())
            return WebInspector.UIString("Capture next canvas frame.");
        else
            return this._recording ? WebInspector.UIString("Stop capturing canvas frames.") : WebInspector.UIString("Start capturing canvas frames.");
    },

    /**
     * @override
     * @return {boolean}
     */
    buttonClicked: function()
    {
        if (!this._canvasAgentEnabled)
            return false;
        if (this._recording) {
            this._recording = false;
            this._stopFrameCapturing();
        } else if (this._isSingleFrameMode()) {
            this._recording = false;
            this._runSingleFrameCapturing();
        } else {
            this._recording = true;
            this._startFrameCapturing();
        }
        return this._recording;
    },

    _runSingleFrameCapturing: function()
    {
        var frameId = this._selectedFrameId();
        this._target.profilingLock.acquire();
        CanvasAgent.captureFrame(frameId, this._didStartCapturingFrame.bind(this, frameId));
        this._target.profilingLock.release();
    },

    _startFrameCapturing: function()
    {
        var frameId = this._selectedFrameId();
        this._target.profilingLock.acquire();
        CanvasAgent.startCapturing(frameId, this._didStartCapturingFrame.bind(this, frameId));
    },

    _stopFrameCapturing: function()
    {
        if (!this._lastProfileHeader) {
            this._target.profilingLock.release();
            return;
        }
        var profileHeader = this._lastProfileHeader;
        var traceLogId = profileHeader.traceLogId();
        this._lastProfileHeader = null;
        function didStopCapturing()
        {
            profileHeader._updateCapturingStatus();
        }
        CanvasAgent.stopCapturing(traceLogId, didStopCapturing);
        this._target.profilingLock.release();
    },

    /**
     * @param {string|undefined} frameId
     * @param {?Protocol.Error} error
     * @param {!CanvasAgent.TraceLogId} traceLogId
     */
    _didStartCapturingFrame: function(frameId, error, traceLogId)
    {
        if (error || this._lastProfileHeader && this._lastProfileHeader.traceLogId() === traceLogId)
            return;
        var profileHeader = new WebInspector.CanvasProfileHeader(this._target, this, traceLogId, frameId);
        this._lastProfileHeader = profileHeader;
        this.addProfile(profileHeader);
        profileHeader._updateCapturingStatus();
    },

    get treeItemTitle()
    {
        return WebInspector.UIString("CANVAS PROFILE");
    },

    get description()
    {
        return WebInspector.UIString("Canvas calls instrumentation");
    },

    /**
     * @override
     * @return {!Element}
     */
    decorationElement: function()
    {
        return this._decorationElement;
    },

    /**
     * @override
     * @param {!WebInspector.ProfileHeader} profile
     */
    removeProfile: function(profile)
    {
        WebInspector.ProfileType.prototype.removeProfile.call(this, profile);
        if (this._recording && profile === this._lastProfileHeader)
            this._recording = false;
    },

    /**
     * @param {boolean=} forcePageReload
     */
    _updateDecorationElement: function(forcePageReload)
    {
        this._decorationElement.removeChildren();
        this._decorationElement.createChild("div", "warning-icon-small");
        this._decorationElement.appendChild(document.createTextNode(this._canvasAgentEnabled ? WebInspector.UIString("Canvas Profiler is enabled.") : WebInspector.UIString("Canvas Profiler is disabled.")));
        var button = this._decorationElement.createChild("button");
        button.type = "button";
        button.textContent = this._canvasAgentEnabled ? WebInspector.UIString("Disable") : WebInspector.UIString("Enable");
        button.addEventListener("click", this._onProfilerEnableButtonClick.bind(this, !this._canvasAgentEnabled), false);

        var target = this._target;
        /**
         * @param {?Protocol.Error} error
         * @param {boolean} result
         */
        function hasUninstrumentedCanvasesCallback(error, result)
        {
            if (error || result)
                target.resourceTreeModel.reloadPage();
        }

        if (forcePageReload) {
            if (this._canvasAgentEnabled) {
                CanvasAgent.hasUninstrumentedCanvases(hasUninstrumentedCanvasesCallback);
            } else {
                for (var frameId in this._framesWithCanvases) {
                    if (this._framesWithCanvases.hasOwnProperty(frameId)) {
                        target.resourceTreeModel.reloadPage();
                        break;
                    }
                }
            }
        }
    },

    /**
     * @param {boolean} enable
     */
    _onProfilerEnableButtonClick: function(enable)
    {
        if (this._canvasAgentEnabled === enable)
            return;

        /**
         * @param {?Protocol.Error} error
         * @this {WebInspector.CanvasProfileType}
         */
        function callback(error)
        {
            if (error)
                return;
            this._canvasAgentEnabled = enable;
            this._updateDecorationElement(true);
            this._dispatchViewUpdatedEvent();
        }
        if (enable)
            CanvasAgent.enable(callback.bind(this));
        else
            CanvasAgent.disable(callback.bind(this));
    },

    /**
     * @return {boolean}
     */
    _isSingleFrameMode: function()
    {
        return !this._capturingModeSelector.selectedOption().value;
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _frameAdded: function(event)
    {
        var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
        this._addFrame(frame);
    },

    /**
     * @param {!WebInspector.ResourceTreeFrame} frame
     */
    _addFrame: function(frame)
    {
        var frameId = frame.id;
        var option = document.createElement("option");
        option.text = frame.displayName();
        option.title = frame.url;
        option.value = frameId;

        this._frameOptions[frameId] = option;

        if (this._framesWithCanvases[frameId]) {
            this._frameSelector.addOption(option);
            this._dispatchViewUpdatedEvent();
        }
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _frameRemoved: function(event)
    {
        var frame = /** @type {!WebInspector.ResourceTreeFrame} */ (event.data);
        var frameId = frame.id;
        var option = this._frameOptions[frameId];
        if (option && this._framesWithCanvases[frameId]) {
            this._frameSelector.removeOption(option);
            this._dispatchViewUpdatedEvent();
        }
        delete this._frameOptions[frameId];
        delete this._framesWithCanvases[frameId];
    },

    /**
     * @param {string} frameId
     */
    _contextCreated: function(frameId)
    {
        if (this._framesWithCanvases[frameId])
            return;
        this._framesWithCanvases[frameId] = true;
        var option = this._frameOptions[frameId];
        if (option) {
            this._frameSelector.addOption(option);
            this._dispatchViewUpdatedEvent();
        }
    },

    /**
     * @param {!PageAgent.FrameId=} frameId
     * @param {!CanvasAgent.TraceLogId=} traceLogId
     */
    _traceLogsRemoved: function(frameId, traceLogId)
    {
        var sidebarElementsToDelete = [];
        var sidebarElements = /** @type {!Array.<!WebInspector.ProfileSidebarTreeElement>} */ ((this.treeElement && this.treeElement.children) || []);
        for (var i = 0, n = sidebarElements.length; i < n; ++i) {
            var header = /** @type {!WebInspector.CanvasProfileHeader} */ (sidebarElements[i].profile);
            if (!header)
                continue;
            if (frameId && frameId !== header.frameId())
                continue;
            if (traceLogId && traceLogId !== header.traceLogId())
                continue;
            sidebarElementsToDelete.push(sidebarElements[i]);
        }
        for (var i = 0, n = sidebarElementsToDelete.length; i < n; ++i)
            sidebarElementsToDelete[i].ondelete();
    },

    /**
     * @return {string|undefined}
     */
    _selectedFrameId: function()
    {
        var option = this._frameSelector.selectedOption();
        return option ? option.value : undefined;
    },

    _dispatchViewUpdatedEvent: function()
    {
        this._frameSelector.element.classList.toggle("hidden", this._frameSelector.size() <= 1);
        this.dispatchEventToListeners(WebInspector.ProfileType.Events.ViewUpdated);
    },

    /**
     * @override
     * @return {boolean}
     */
    isInstantProfile: function()
    {
        return this._isSingleFrameMode();
    },

    /**
     * @override
     * @return {boolean}
     */
    isEnabled: function()
    {
        return this._canvasAgentEnabled;
    },

    __proto__: WebInspector.ProfileType.prototype
}

/**
 * @constructor
 * @implements {CanvasAgent.Dispatcher}
 * @param {!WebInspector.CanvasProfileType} profileType
 */
WebInspector.CanvasDispatcher = function(profileType)
{
    this._profileType = profileType;
    InspectorBackend.registerCanvasDispatcher(this);
}

WebInspector.CanvasDispatcher.prototype = {
    /**
     * @param {string} frameId
     */
    contextCreated: function(frameId)
    {
        this._profileType._contextCreated(frameId);
    },

    /**
     * @param {!PageAgent.FrameId=} frameId
     * @param {!CanvasAgent.TraceLogId=} traceLogId
     */
    traceLogsRemoved: function(frameId, traceLogId)
    {
        this._profileType._traceLogsRemoved(frameId, traceLogId);
    }
}

/**
 * @constructor
 * @extends {WebInspector.ProfileHeader}
 * @param {!WebInspector.Target} target
 * @param {!WebInspector.CanvasProfileType} type
 * @param {!CanvasAgent.TraceLogId=} traceLogId
 * @param {!PageAgent.FrameId=} frameId
 */
WebInspector.CanvasProfileHeader = function(target, type, traceLogId, frameId)
{
    WebInspector.ProfileHeader.call(this, target, type, WebInspector.UIString("Trace Log %d", type._nextProfileUid));
    /** @type {!CanvasAgent.TraceLogId} */
    this._traceLogId = traceLogId || "";
    this._frameId = frameId;
    this._alive = true;
    this._traceLogSize = 0;
    this._traceLogPlayer = traceLogId ? new WebInspector.CanvasTraceLogPlayerProxy(traceLogId) : null;
}

WebInspector.CanvasProfileHeader.prototype = {
    /**
     * @return {!CanvasAgent.TraceLogId}
     */
    traceLogId: function()
    {
        return this._traceLogId;
    },

    /**
     * @return {?WebInspector.CanvasTraceLogPlayerProxy}
     */
    traceLogPlayer: function()
    {
        return this._traceLogPlayer;
    },

    /**
     * @return {!PageAgent.FrameId|undefined}
     */
    frameId: function()
    {
        return this._frameId;
    },

    /**
     * @override
     * @param {!WebInspector.ProfilesPanel} panel
     * @return {!WebInspector.ProfileSidebarTreeElement}
     */
    createSidebarTreeElement: function(panel)
    {
        return new WebInspector.ProfileSidebarTreeElement(panel, this, "profile-sidebar-tree-item");
    },

    /**
     * @override
     * @return {!WebInspector.CanvasProfileView}
     */
    createView: function()
    {
        return new WebInspector.CanvasProfileView(this);
    },

    /**
     * @override
     */
    dispose: function()
    {
        if (this._traceLogPlayer)
            this._traceLogPlayer.dispose();
        clearTimeout(this._requestStatusTimer);
        this._alive = false;
    },

    /**
     * @param {!CanvasAgent.TraceLog=} traceLog
     */
    _updateCapturingStatus: function(traceLog)
    {
        if (!this._traceLogId)
            return;

        if (traceLog) {
            this._alive = traceLog.alive;
            this._traceLogSize = traceLog.totalAvailableCalls;
        }

        var subtitle = this._alive ? WebInspector.UIString("Capturing\u2026 %d calls", this._traceLogSize) : WebInspector.UIString("Captured %d calls", this._traceLogSize);
        this.updateStatus(subtitle, this._alive);

        if (this._alive) {
            clearTimeout(this._requestStatusTimer);
            this._requestStatusTimer = setTimeout(this._requestCapturingStatus.bind(this), WebInspector.CanvasProfileView.TraceLogPollingInterval);
        }
    },

    _requestCapturingStatus: function()
    {
        /**
         * @param {?CanvasAgent.TraceLog} traceLog
         * @this {WebInspector.CanvasProfileHeader}
         */
        function didReceiveTraceLog(traceLog)
        {
            if (!traceLog)
                return;
            this._alive = traceLog.alive;
            this._traceLogSize = traceLog.totalAvailableCalls;
            this._updateCapturingStatus();
        }
        this._traceLogPlayer.getTraceLog(0, 0, didReceiveTraceLog.bind(this));
    },

    __proto__: WebInspector.ProfileHeader.prototype
}

WebInspector.CanvasProfileDataGridHelper = {
    /**
     * @param {!CanvasAgent.CallArgument} callArgument
     * @return {!Element}
     */
    createCallArgumentElement: function(callArgument)
    {
        if (callArgument.enumName)
            return WebInspector.CanvasProfileDataGridHelper.createEnumValueElement(callArgument.enumName, +callArgument.description);
        var element = document.createElement("span");
        element.className = "canvas-call-argument";
        var description = callArgument.description;
        if (callArgument.type === "string") {
            const maxStringLength = 150;
            element.createTextChild("\"");
            element.createChild("span", "canvas-formatted-string").textContent = description.trimMiddle(maxStringLength);
            element.createTextChild("\"");
            element.__suppressPopover = (description.length <= maxStringLength && !/[\r\n]/.test(description));
            if (!element.__suppressPopover)
                element.__evalResult = WebInspector.runtimeModel.createRemoteObjectFromPrimitiveValue(description);
        } else {
            var type = callArgument.subtype || callArgument.type;
            if (type) {
                element.classList.add("canvas-formatted-" + type);
                if (["null", "undefined", "boolean", "number"].indexOf(type) >= 0)
                    element.__suppressPopover = true;
            }
            element.textContent = description;
            if (callArgument.remoteObject)
                element.__evalResult = WebInspector.runtimeModel.createRemoteObject(callArgument.remoteObject);
        }
        if (callArgument.resourceId) {
            element.classList.add("canvas-formatted-resource");
            element.__resourceId = callArgument.resourceId;
        }
        return element;
    },

    /**
     * @param {string} enumName
     * @param {number} enumValue
     * @return {!Element}
     */
    createEnumValueElement: function(enumName, enumValue)
    {
        var element = document.createElement("span");
        element.className = "canvas-call-argument canvas-formatted-number";
        element.textContent = enumName;
        element.__evalResult = WebInspector.runtimeModel.createRemoteObjectFromPrimitiveValue(enumValue);
        return element;
    }
}

/**
 * @extends {WebInspector.Object}
 * @constructor
 * @param {!CanvasAgent.TraceLogId} traceLogId
 */
WebInspector.CanvasTraceLogPlayerProxy = function(traceLogId)
{
    this._traceLogId = traceLogId;
    /** @type {!Object.<string, !CanvasAgent.ResourceState>} */
    this._currentResourceStates = {};
    /** @type {?CanvasAgent.ResourceId} */
    this._defaultResourceId = null;
}

/** @enum {string} */
WebInspector.CanvasTraceLogPlayerProxy.Events = {
    CanvasTraceLogReceived: "CanvasTraceLogReceived",
    CanvasReplayStateChanged: "CanvasReplayStateChanged",
    CanvasResourceStateReceived: "CanvasResourceStateReceived",
}

WebInspector.CanvasTraceLogPlayerProxy.prototype = {
    /**
     * @param {number|undefined} startOffset
     * @param {number|undefined} maxLength
     * @param {function(?CanvasAgent.TraceLog):void} userCallback
     */
    getTraceLog: function(startOffset, maxLength, userCallback)
    {
        /**
         * @param {?Protocol.Error} error
         * @param {!CanvasAgent.TraceLog} traceLog
         * @this {WebInspector.CanvasTraceLogPlayerProxy}
         */
        function callback(error, traceLog)
        {
            if (error || !traceLog) {
                userCallback(null);
                return;
            }
            userCallback(traceLog);
            this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasTraceLogReceived, traceLog);
        }
        CanvasAgent.getTraceLog(this._traceLogId, startOffset, maxLength, callback.bind(this));
    },

    dispose: function()
    {
        this._currentResourceStates = {};
        CanvasAgent.dropTraceLog(this._traceLogId);
        this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasReplayStateChanged);
    },

    /**
     * @param {?CanvasAgent.ResourceId} resourceId
     * @param {function(?CanvasAgent.ResourceState):void} userCallback
     */
    getResourceState: function(resourceId, userCallback)
    {
        resourceId = resourceId || this._defaultResourceId;
        if (!resourceId) {
            userCallback(null); // Has not been replayed yet.
            return;
        }
        var effectiveResourceId = /** @type {!CanvasAgent.ResourceId} */ (resourceId);
        if (this._currentResourceStates[effectiveResourceId]) {
            userCallback(this._currentResourceStates[effectiveResourceId]);
            return;
        }

        /**
         * @param {?Protocol.Error} error
         * @param {!CanvasAgent.ResourceState} resourceState
         * @this {WebInspector.CanvasTraceLogPlayerProxy}
         */
        function callback(error, resourceState)
        {
            if (error || !resourceState) {
                userCallback(null);
                return;
            }
            this._currentResourceStates[effectiveResourceId] = resourceState;
            userCallback(resourceState);
            this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasResourceStateReceived, resourceState);
        }
        CanvasAgent.getResourceState(this._traceLogId, effectiveResourceId, callback.bind(this));
    },

    /**
     * @param {number} index
     * @param {function(?CanvasAgent.ResourceState, number):void} userCallback
     */
    replayTraceLog: function(index, userCallback)
    {
        /**
         * @param {?Protocol.Error} error
         * @param {!CanvasAgent.ResourceState} resourceState
         * @param {number} replayTime
         * @this {WebInspector.CanvasTraceLogPlayerProxy}
         */
        function callback(error, resourceState, replayTime)
        {
            this._currentResourceStates = {};
            if (error) {
                userCallback(null, replayTime);
            } else {
                this._defaultResourceId = resourceState.id;
                this._currentResourceStates[resourceState.id] = resourceState;
                userCallback(resourceState, replayTime);
            }
            this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasReplayStateChanged);
            if (!error)
                this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasResourceStateReceived, resourceState);
        }
        CanvasAgent.replayTraceLog(this._traceLogId, index, callback.bind(this));
    },

    clearResourceStates: function()
    {
        this._currentResourceStates = {};
        this.dispatchEventToListeners(WebInspector.CanvasTraceLogPlayerProxy.Events.CanvasReplayStateChanged);
    },

    __proto__: WebInspector.Object.prototype
}


text:
Q: Space curves- Vector enter preformatted text here

I have attached both the problem and approach to the solution. But I am confused with the steps given. I am not able to understand them. Kindly help in providing a simplified version of the solution.
PS- I tried pasting the problem and solution from a word file, but I don't understand why the editor is not accepting my text. That's why I have attached the images.

A: Let $\alpha(s)$ be an arc-length parametrized curve lying in the sphere of radius $a$ centered at $C \in \Bbb R^3$; then
$(\alpha(s) - C ) \cdot (\alpha(s) - C) = a^2; \tag 1$
thus, differentiating with respect to $s$ we find
$\dot \alpha(s) \cdot (\alpha(s) - C) = 0, \tag 2$
since $a^2$ is constant.  Now
$\dot \alpha(s) = T(s), \tag 3$
the unit tangent vector to $\alpha$; thus (2) becomes
$T(s) \cdot (\alpha(s) - C) = 0; \tag 4$
this shows that the component of $\alpha(s) - C$ along $T(s)$ is zero; differentiating again with respect to $s$ yields
$\dot T(s) \cdot (\alpha(s) - C) + T(s) \cdot \dot \alpha(s) = 0, \tag 5$
which by virtue of (3) is transformed into
$\dot T(s) \cdot (\alpha(s) - C) + T(s) \cdot T(s) = 0, \tag 6$
which, since $T(s)$ is a unit vector, i. e.,
$T(s) \cdot T(s) = 1, \tag 7$
may be written
$\dot T(s) \cdot (\alpha(s) - C) + 1 = 0; \tag 8$
note this implies that
$\dot T(s) \ne 0; \tag{8.1}$
thus we may use the first Frenet-Serret equation
$\dot T(s) = \kappa(s) N(s), \tag 9$
where $N(s)$ is the unit normal vector field to $\alpha(s)$ and
$\kappa(s) > 0 \tag{10}$
is the curvature of $\alpha(s)$; from (8) we obtain
$\kappa(s) N(s) \cdot (\alpha(s) - C) + 1 = 0; \tag{11}$
applying a little ordinary algebra we find
$N(s) \cdot (\alpha(s) - C) = -\dfrac{1}{\kappa(s)}, \tag{11.5}$
which expresses the $N(s)$ component of $\alpha(s) - C$; taking yet another $s$-derivative, this time of (11):
$\dot N(s) \cdot (\alpha(s) - C) + N(s) \cdot \dot \alpha(s) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}; \tag{12}$
via (3),
$\dot N(s) \cdot (\alpha(s) - C) + N(s) \cdot T(s) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}, \tag{13}$
and with
$N(s) \cdot T(s) = 0, \tag{14}$
$\dot N(s) \cdot (\alpha(s) - C) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}; \tag{15}$
the second Frenet-Serret equation
$\dot N(s) = -\kappa(s) T(s) + \tau(s) B(s), \tag{16}$
in which $\tau(s)$ is the torsion and
$B(s) = T(s) \times N(s) \tag{17}$
is the unit binormal vector to $\alpha(s)$, may now be used to transform (15) into
$(-\kappa(s) T(s) + \tau(s) B(s)) \cdot (\alpha(s) - C) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}, \tag{18}$
or
$- \kappa(s) T(s) \cdot (\alpha(s) - C) + \tau(s) B(s) \cdot (\alpha(s) - C) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}, \tag{19}$
apply (4):
$\tau(s) B(s) \cdot (\alpha(s) - C) = \dfrac{\dot \kappa(s)}{\kappa^2(s)}, \tag{20}$
a little more algebraic grease and this yields
$B(s) \cdot (\alpha(s) - C) = \dfrac{\dot \kappa(s)}{\kappa^2(s) \tau(s)}, \tag{21}$
the component of $\alpha(s) - C$ along $B(s)$.  We may expand $\alpha(s) - C$ in the basis comprised of $T(s)$, $N(s)$, and $B(s)$:
$\alpha(s) - C =$
$((\alpha(s) - C) \cdot T(s)) T(s) + ((\alpha(s) - C) \cdot N(s))N(s) + ((\alpha(s) - C) \cdot B(s))B(s); \tag{22}$
in light of (4), (11.5), and (19) we find
$\alpha(s) - C =  -\dfrac{1}{\kappa(s)}N(s) + \dfrac{\dot \kappa(s)}{\kappa^2(s) \tau(s)}B(s); \tag{23}$
finally, we insert this into (1) and, recalling that $N(s)$ and $B(s)$ are orthonormal, obtain
$a^2 = \dfrac{1}{\kappa^2(s)} + \left ( \dfrac{\dot \kappa(s)}{\kappa^2(s) \tau(s)} \right )^2, \tag{24}$
the desired result.  $OE\Delta$.

redpajama_set_name: RedPajamaStackExchange


Allen Co. of Louisville will provide you the highest quality performance coating available today for your tub and tile transformation. Eliminate the likelihood of mold and bacterial growth making a safer and easier-to-clean surface for your family.
See us for all your bathtub refinishing, reglazing, repair, and resurfacing.


Arsenal manager Arsene Wenger has spoken of his embarrassment when he sees videos of himself remonstrating with fourth officials on the touchline, the Independent reports.
(Video) Wenger: Arsenal have a chance of catching Chelsea – why he may be right!
The Gunners boss feels it is not the right way for managers to behave, but concedes he has done it himself and tries to stop himself from doing it too often.
"I don't think it helps to get the frustration out on the fourth officials," he said. "I don't think it is right, honestly.


I haven't written a blog post in quite a while, the last few months have been a whirl wind, and I've been struggling to show you what Ive been up to. The Easter Holidays are upon us and last half term we stayed at the lovely Apton Hall which was so nice, so I wanted to show you around. A nice hotel stay is a rare treat – so I love to photograph the little details and show you around the places I stay.
Apton Hall is a new wedding venue in Rochford near Southend, Essex, that also offers a B&B service midweek. So great for Half term visits and business stays . A 45 minute drive from London to the coast, its the perfect way to get to the sea after you ve been beaten down by city life. I love the seaside and it was a treat to drive up for the weekend.
The tea and coffee making facilities are just what you need after a restful nights sleep in these gorgeous fluffy beds. Decorated with an easy relaxing shades, with original features. It's the perfect retreat to help unwind those tight city shoulders.
The rooms in Apton Hall are airy and spacious, with space for hanging clothes, a desk / dressing table , a generous bathroom and lots of large windows that have a gorgeous view of the grounds . Apton Hall feels luxurious, yet easy enough to let the children to be relaxed. A great mix for all ages in a family.
Breakfast is served in a restored area of the hotel, which is so rustic. It used to be a barn and they have kept all the features. I loved the beams so much! I would have liked to take them home! Breakfast was a full English and did not dissapoint – the food portions were huge, so there was no room at all for the cereal, pastries and yoghurts on offer.
The grounds around Apton Hall are stunning, with calming scenery for miles, and we enjoyed going for a walk after breakfast.
We then went on to the coast to enjoy all the fun that the seaside offers. Fish and Chips, Ice creams and the glorious sound of the sea. Southend and Leigh-on-Sea are a short drive from Apton Hall and a lovely way to spend quality time with Family.
The kids are still talking about Apton Hall and asked to go again this Easter. I assured them it wouldn't be long till we visited again .
I hope you enjoyed this blog post, if you have any questions, feel free to message below and I'll be happy to answer them.


The item "New Era Fitted Hawaii Koa Tree Camo Chee Hu snapback" is in sale since Tuesday, June 16, 2015. This item is in the category "Clothing, Shoes & Accessories\Men's Accessories\Hats". The seller is "cokenorth" and is located in Pickering, Ontario. This item can be shipped worldwide.


When she was a kid, Lina Khalifeh was beat up by the boys in her neighborhood. Rather than be defeated, she developed the skills to defend herself. Now she's paying them forward.
Lina Khalifeh wants women to fight back.
She means that literally. At the 10th annual Women in the World summit, the Jordanian taekwondo powerhouse, who founded the first self-defense studio for women in the Middle East, had the audience out of their seats, kicking and throwing jabs.
But the charismatic Khalifeh's early memories weren't so buoyant. Viewed as "different" by kids in her neighborhood — "because I didn't want to go inside and play with dolls," she explained — she was targeted by boys who beat her up and dismissed by girls who ostracized her. Making matters worse, Khalifeh's father dubbed her a "troublemaker" because she stood up to the guys who tried to pummel her.
"Women are called troublemakers and men are persistent," Khalifeh told the audience.
Khalifeh refused to yield. "I was like, 'We can do something. We can stand strong and not accept injustice.'" She looked to her own life — martial arts had taught her to be confident. So, in 2012, she founded SheFighter Self-Defense School. Her mission: To teach women in Jordan how to protect themselves against domestic violence and sexual assault.
In just seven years, Khalifeh said, she's trained 15,000 women — including British actress Emma Watson — and opened a studio in Hong Kong. She's looking into options for a school in the United Arab Emirates. Ultimately, her goal is to open thousands of studios worldwide. She announced at the summit that she will bring SheFighter to the United States in November as part of a global tour.
Lina Khalifeh and Alyse Nelson, President and CEO of Vital Voices Global Partnership at the 2019 Women In The World Summit.
Khalifeh has fans in high places. She was honored by President Barack Obama in 2015 during the White House's Emerging Global Entrepreneurship event, and Hillary Clinton presented her with a Vital Voices Economic Empowerment Leadership award in 2018.
Khalifeh, who is openly gay, said she still gets threats — and occasionally faces legal action — from men. "It's annoying having threats from men all the time," she said with a laugh. But she has also seen change. Men stop her in the street and ask if their daughters can join SheFighter.
"They tell me, 'You are my role model, I want to be like you.' They'll say, 'If you're running for president, I'll vote for you.' I'm like, 'Well, we have a kingdom [in Jordan] I mean, but okay," she said.
Going forward, Khalifeh wants to continue to think outside the box.


In business, failures are unavoidable. Many entrepreneurs treat them as a personal defeat and often burst into tears when the problems emerge on the horizon. In fact, it's not that everything is washed up when you make a mistake. The key to success is to know how to deal with failures and how to learn from them.
Sometimes when you think that it's the end of the world, it may come out that the worst thing that ever happened to you can turn into the best one. The key factor is to welcome both successes and failures as the natural part of your business. Never doubt your passion, involvement, and ability to get things done. If you have confidence in what you're doing, where you're going, and what you're trying to build – this is what will help you to get through the tough time. You can't avoid small failures and mistakes when you run a business – get used to it and try to take as much out of them as it's possible.
Mistakes emerge in the ordinary course of events, and not always mean the end of your business. Try to listen and be open to constructive criticism – sometimes it isn't easy to hear what others want to say. Try to take it as a lesson that can help you to notice the flaws of your project. You can learn a lot from some of your downs; they can change your point of view and assist you in overcoming the future obstacles.
Take your time to think about a new idea or an innovative concept; as soon as you know whether the changes or the steps that you can take will have a positive influence on your project – act fast! It sounds like the general rule, yet it seems to be missing from so many businesses. Arguing, judging, hiring, firing – many entrepreneurs do it incredibly easy. In some situations, it works; but if you want to increase the likeability of success, rethink the new concept, and when it's done, act fast.
That's true that you should be focused on your project, fall in love with it, and have a general concept of how it should look like. However, the most important thing is to talk to the consumers, listen to their feedback, and regularly change your services to meet their needs. Remember, you are doing it for them, so it should be customized just according to how they like it. You should treat your clients as the co-creators of your company and product.
The reason why many startups fail is that their founder couldn't manage to gather enough valuable support. Being an entrepreneur is much easier when you're not running your business all by yourself. Surround yourself with partners whose skills complement yours and whom you can trust completely. Doing so, you'll increase your chances to achieve success on the market.
Do you know that feeling of regret when you've missed the opportunity to take the step that could lead to a success? It's awful! When you're an entrepreneur, you have to move quickly – if you don't, you will miss things that could help your business immensely, and that lost opportunity can lead to a painful and huge failure.
Having a role model and somebody to admire, or someone worth following, can increase your motivation. Many entrepreneurs came after the examples of the biggest market specialists and failed. Why? What went wrong? The method was tried out before by the successful businesses; it should have worked out this time too. But not really. The reason is that there is no road map nor a recipe for how to run a business; all of them are different. Instead of copying your business heroes' approach, you should rather gather the valuable knowledge and analyze all your steps (and what influence did they have on your current position on the market). Knowing all that will make it easier to develop your startup.
Try to think about so-called "failures" in terms of mistakes. Find out what went wrong, what to change to make your business thrive again. Treat your failures as the test results which make you evaluate the approach. If it failed – rethink it, change a little, or choose a completely new one. Gather up what you've learned and try again.
To avoid the biggest failure of shutting down your business, you need to make your solution very simple. A lot of startups fail not because the idea is bad on its own, but rather because the project is too complicated. Try to make your product easy to use – it will make you more likely to succeed.
When success comes too early or too easily in the process, entrepreneurs come to believe that it's a natural state of things; hence, when the failure emerges on the horizon, most of the entrepreneurs are unprepared. When you fail, try not to collapse, take it as an opportunity that opens your mind. Of course, it's not that you should look for the failure to change how things go, it's more about not to be afraid of making mistakes. Treat them as an important part of your learning. Don't get cold feet about small failures – take them as a chance to pick up your project.
Failures are not so bad as they seem. If you try to understand them and treat them as a lesson, you can take a significant advantage of them and make your business thrive instead of closing it down and collapsing completely.
Previous articleUnderstanding A Stock Table: How To Read Stock Quotes/Stock Tables?